刚进入javascript和kickout.js。我找到了许多我要完成的示例。而且我觉得我可能忽略了一个小的语法错误。我试图过滤通过ajax / json从服务器返回的集合(this.tasks)。我的工作很好。我想做的是让用户能够在完成和不完成的任务之间切换。
我将代码切换为仅对taskFiltered运行foreach循环。“ this.done”为true或false。
任务模板
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);
};
页面模型
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
};
这行不通。
对您的代码进行了两个小更正。首先,如@XGreen所述,您需要将数组值而不是observableArray实例作为arrayFilter
函数的第一个参数传递。最后,由于Task.done
是可观察的,因此您需要调用该成员以获取值。这是修改后的代码:
this.tasksFiltered = ko.computed(function() {
return ko.utils.arrayFilter(this.tasks(), function(Task) {
return Task.done() === true;
});
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句