刚刚开始接触 javascript 和 knockout.js。我找到了很多我想要实现的目标的例子。我觉得我可能忽略了一个小语法错误。我正在尝试过滤已返回的集合(这个任务)通过 ajax/json 从服务器获取。我的那个工作得很好。我想做的是让用户能够在完成和不完整的任务之间切换。
我将代码切换为仅在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);
};
页面模型
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提到的,您需要传递数组值,notobservableArray 实例,作为第一个参数arrayFilter
功能。最后,因为Task.done
是可观察的,需要调用成员来获取值。这是修改后的代码:
this.tasksFiltered = ko.computed(function() {
return ko.utils.arrayFilter(this.tasks(), function(Task) {
return Task.done() === true;
});
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)