From e82af75a29f91f26c533a9bc1d94fb8a3ea1d86d Mon Sep 17 00:00:00 2001 From: kaofushwai Date: Wed, 28 Oct 2015 23:31:24 +0800 Subject: [PATCH 1/5] Bind this in Event handlers --- homework/content.js | 6 +++--- homework/list.js | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/homework/content.js b/homework/content.js index 710be28..4e7f423 100644 --- a/homework/content.js +++ b/homework/content.js @@ -4,11 +4,11 @@ var _wrapper = document.querySelector('#note-content-wrapper'); function start() { - window.addEventListener('note-open', function(event) { + window.addEventListener('note-open', (function(event) { var note = event.detail; resetWrapper(); drawNote(note); - }); + }).bind(this)); } function resetWrapper() { @@ -33,5 +33,5 @@ document.addEventListener('DOMContentLoaded', function(event) { start(); - }); + }).bind(this)); })(); diff --git a/homework/list.js b/homework/list.js index 21eddbc..d6a3b4b 100644 --- a/homework/list.js +++ b/homework/list.js @@ -6,14 +6,14 @@ var _wrapper = document.querySelector('#note-list-wrapper'); function start() { - fetchList(function(data) { + fetchList((function(data) { updateList(data); drawList(); preloadFirstNote(); - }); - window.addEventListener('click', function(event) { + }).bind(this)); + window.addEventListener('click', (function(event) { onNoteOpen(event); - }); + }).bind(this)); } function onNoteOpen(event) { @@ -59,21 +59,21 @@ var xhr = new XMLHttpRequest(); xhr.open('GET', 'http://127.0.0.1:8000/demo-list-notes.json', true); xhr.responseType = 'json'; - xhr.onreadystatechange = function(e) { + xhr.onreadystatechange = (function(e) { // Watch out: we have a mysterious unknown 'this'. - if (this.readyState === 4 && this.status === 200) { - var listData = this.response; + if (xhr.readyState === 4 && xhr.status === 200) { + var listData = xhr.response; // The flow ends here. afterFetch(listData); - } else if (this.status !== 200 ){ + } else if (xhr.status !== 200 ){ // Ignore error in this case. } - }; + }).bind(this)); xhr.send(); } - document.addEventListener('DOMContentLoaded', function(event) { + document.addEventListener('DOMContentLoaded', (function(event) { start(); - }); + }).bind(this)); })(); From 269bcdc483ae5dd259ad027fcd2a5ac2caf22055 Mon Sep 17 00:00:00 2001 From: kaofushwai Date: Wed, 28 Oct 2015 23:50:38 +0800 Subject: [PATCH 2/5] 'Deal with object properties w/ constructor & prototype --- homework/content.js | 65 +++++++++++----------- homework/index.html | 1 + homework/list.js | 132 ++++++++++++++++++++++---------------------- homework/main.js | 8 +++ 4 files changed, 110 insertions(+), 96 deletions(-) create mode 100644 homework/main.js diff --git a/homework/content.js b/homework/content.js index 4e7f423..3108387 100644 --- a/homework/content.js +++ b/homework/content.js @@ -1,37 +1,40 @@ 'use strict'; -(function() { - var _wrapper = document.querySelector('#note-content-wrapper'); - - function start() { - window.addEventListener('note-open', (function(event) { - var note = event.detail; - resetWrapper(); - drawNote(note); - }).bind(this)); - } - - function resetWrapper() { - _wrapper.innerHTML = ''; +(function(exports) { + var ContentManager = function () { + this/_wrapper = document.querySelector('#note-content-wrapper'} + } - function drawNote(note) { - var title = note.title; - var h = document.createElement('h2'); - h.textContent = title; - var passages = note.passages; - var buff = document.createDocumentFragment(); - passages.forEach(function(passage) { - var p = document.createElement('p'); - p.classList.add('note-passage'); - p.textContent = passage; - buff.appendChild(p); - }); - _wrapper.appendChild(h); - _wrapper.appendChild(buff); + ContentManager.prototype = { + start(){ + window.addEventListener('note-open', (function(event){ + var note = event.detail; + this.resetWrapper(); + this.drawNote(note); + }).bind(this)); + }, + + resetWrapper(){ + this._wrapper.innerHTML = ''; + }, + + drawNote(note){ + var title= note.title; + var h = document.createElement('h2'); + h.textContent = title; + var passages = note.passages; + var buff = document.createDocumentFragment(); + passages.forEach(function(passage){ + var p = document.createElement('p'); + p.classList.add('note-passage'); + p.textContent = passage; + buff.appendChid(p); + }); + this._wrapper.appendChid(h); + this._wrapper.appendChid(buff); + } } - document.addEventListener('DOMContentLoaded', function(event) { - start(); - }).bind(this)); -})(); + exports.ContentManager = ContentManager; + })(window); \ No newline at end of file diff --git a/homework/index.html b/homework/index.html index e387963..ef5ceb9 100644 --- a/homework/index.html +++ b/homework/index.html @@ -5,6 +5,7 @@ Homework - Note List + -