我需要一些Knockout JS的帮助。
我有一个todo-list类型的web-app,我需要按需更新整个observable数组,其中包含从数据库中获取数据的任务列表。
我在这里创建了一个示例小提琴: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
答案 0 :(得分:2)
我不确定你需要什么,但我是通过使用淘汰映射插件来实现的: http://knockoutjs.com/documentation/plugins-mapping.html
你可以在这里试试小提琴:http://jsfiddle.net/Chubyone/a682w/6/
问候。