Knockout Concurrency插件可以跟踪新添加或删除的行吗?

时间:2012-06-04 17:16:01

标签: concurrency knockout.js

我正在尝试在我的项目中使用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());

http://jsfiddle.net/rCVk4/3/

没有任何事情发生,插件不会跟踪新添加的项目,有人知道原因吗?

1 个答案:

答案 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样本进行全功能演示,也可以试试这个小提琴

http://jsfiddle.net/7atZT/