我正在尝试在我的项目中使用Knockout Concurrency插件,我现在正在摆弄示例代码,但我没有让它工作:
https://github.com/AndersMalmgren/Knockout.Concurrency/wiki/Getting-started
ViewModel = function() {
this.name = ko.observable("John").extend({ concurrency: true});
this.children = [{ name: ko.observable("Jane").extend({concurrency: true })}, { name: ko.observable("Bruce").extend({concurrency: true })}];
this.getData = function() {
//Simulate backend data
var data = { name: "John Doe", children: [{ name: "Jane Doe"},{ name: "Bruce Wayne"}, { name: "New row"}]};
new ko.concurrency.Runner().run(this, data);
}
}
ko.applyBindings(new ViewModel());
没有任何事情发生,插件不会跟踪新添加的项目,有人知道原因吗?
答案 0 :(得分:2)
感谢您试用我的插件,非常快,我今天上传了代码!
该插件确实支持跟踪已删除和添加的行。但是要知道它需要你用哪个行来提供一个映射器
var mappings = {
children: {
key: function(item) {
return ko.utils.unwrapObservable(item.id);
},
create: function(data) {
return { id: data.id, name: data.name };
}
}
};
名称children对应于数组的名称。
Key方法用于标识用作标识符的属性。
Create方法用于创建新行(添加行)。
您可以从Github下载MVC3样本进行全功能演示,也可以试试这个小提琴