aib*_*rra 4 javascript knockout.js
刚进入javascript和knockout.js.我找到了一堆我想要完成的例子.我觉得我可能会忽略一个小的语法错误.我正在尝试通过ajax/json从服务器过滤已经返回的集合(this.tasks).我工作得很好.我想做的是让用户能够在完成和不完整的任务之间切换.
我将代码切换到在tasksFiltered上运行foreach循环."this.done"无论是真还是假.
任务模板
var taskModel = function(id, title, description, done){
var self = this;
this.id = ko.observable(id);
this.title = ko.observable(title);
this.description = ko.observable(description);
this.done = ko.observable(done);
this.showEdit = ko.observable(false);
this.titleUpdate = ko.observable(false);
this.descriptionUpdate = ko.observable(false);
};
Run Code Online (Sandbox Code Playgroud)
页面模型
var pageModelTasks = function(){
var self = this;
this.task_title = ko.observable("");
this.task_description = ko.observable("");
this.task_title_focus = ko.observable(true);
this.tasks = ko.observableArray([]);
this.tasksFiltered = ko.computed(function() {
return ko.utils.arrayFilter(this.tasks, function(Task) {
return Task.done == true;
});
});
// CRUD functions excluded
};
Run Code Online (Sandbox Code Playgroud)
这不起作用.
Vin*_*lly 10
对您的代码进行两次小修改.首先,正如@XGreen所提到的,您需要将数组值而不是 observableArray实例作为arrayFilter
函数的第一个参数传递.最后,因为Task.done
是可观察的,所以需要调用该成员来获取值.这是修改后的代码:
this.tasksFiltered = ko.computed(function() {
return ko.utils.arrayFilter(this.tasks(), function(Task) {
return Task.done() === true;
});
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17107 次 |
最近记录: |