1

我需要一些关于 Knockout JS 的帮助。

我有一个待办事项列表类型的网络应用程序,我需要根据需要更新整个可观察数组,其中包含从数据库中获取的数据的任务列表。

我在这里创建了一个示例小提琴:http: //jsfiddle.net/ingro/43XcU/26/

self.update = function(){

    var values = [
        {time: "17:00", title: "test#11"},
        {time: "18:00", title: "work#22"},     
        {time: "19:00", title: "task#33"},    
        {time: "20:00", title: "sleep#14"}
    ];

    self.clone = ko.observableArray(ko.utils.arrayMap( values , function( clone) {
        return new Post(clone.time, clone.title);
    }));

    var count = 0;

    ko.utils.arrayForEach(self.posts(), function(post) {
        post.time(self.clone()[count].time());
        post.title(self.clone()[count].title());
        count++;
    });           

}

“值”中的数据模拟来自服务器的 JSON 响应。我使它工作的唯一方法是创建一个克隆可观察数组,然后循环遍历真实数组并使用新值一一更新其所有元素。由于许多原因,这不是最佳解决方案,例如如果两个数组中的元素数量不相等等等。

所以任何人都可以建议我一个更好的方法来更新它?

感谢并为我糟糕的英语感到抱歉:D

4

1 回答 1

2

我不确定这绝对是你需要的,但我是通过使用敲除映射插件做到的:http: //knockoutjs.com/documentation/plugins-mapping.html

你可以在这里试试小提琴:http: //jsfiddle.net/Chubyone/a682w/6/

问候。

于 2012-06-07T09:52:08.550 回答