forked from tcorral/Design-Patterns-in-Javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathListController.js
49 lines (45 loc) · 1.3 KB
/
ListController.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
var ListController = function(oView, oModel){
this.oView = oView;
this.oModel = oModel;
};
ListController.prototype.init = function(){
var self = this;
this.oModel.all(function(oErr, aItems){
var todoHTML = '';
var doneHTML = '';
var nItem = 0;
var nLenItems = aItems.length;
var oItem = null;
if(oErr){
return self.handleError("Server failed to get todo items", oErr);
}
for(; nItem < nLenItems;){
oItem = aItems[nItem];
if(oItem.done){
doneHTML += "<li class='done' id='item_" + nItem + "'>" + oItem.text + "</li>";
}else{
todoHTML += "<li class='todo' id='item_" + nItem + "'>" + oItem.text + "</li>";
}
nItem = nItem + 1;
}
self.oView.innerHTML = todoHTML + doneHTML;
$(".todo", self.oView).bind("click", function(){
var oElement = this;
self.oModel.completeItem(this.id, function(){
oElement.className = "done";
});
});
$(".done", self.oView).bind("click", function(){
var oElement = this;
self.oModel.undoItem(this.id, function(){
oElement.className = "todo";
});
});
});
};
ListController.prototype.handleError = function(sMessage){
var oLi = document.createElement("li");
oLi.className = "error";
oLi.innerHTML = sMessage;
this.oView.appendChild(oLi);
};