2012-04-06 23 views
0

朋友。我有以下问题。我有两个可观察数组。循环遍历一个对象数组,并将值仅添加到另一个数组。敲除

self.NamesArray= ko.observableArray([{"name: John"}, {"name: Mario"}]); 

self.ValueArray = ko.observable([]); 

我想通过NamesArray环和只添加名称值的ValueArray。

所以输出ValueArray应包含在最终以下元素:

{John, Mario} 

怎么能这样呢?我对JS非常陌生,我只是在研究Knockout库。任何工作示例的帮助将不胜感激。谢谢。

小提琴:http://jsfiddle.net/PsyComa/RfWVP/

回答

1

这真的取决于这样做背后你的意图。

如果你想要做这只是一次简单的迭代第一个数组:

// Load current values of the observables 
var n = self.NamesArray(), v = self.ValueArray(); 

// Push all names from n to v 
for (var i = 0; i < n.length; i++) { 
    v.push(n[i].name); 
} 

// Update the "values" observable 
self.ValueArray(v); 

这样做的缺点是“ValueArray”没有得到更新,每当“NamesArray”的转变。如果你想“ValueArray”是包含在“NamesArray”中找到所有名字的数组(!只有那些),你可以使用一个计算观察到的,而不是:

self.ValueArray = ko.computed(function() { 
    var n = self.NamesArray(), v = []; 
    // ...same for loop as above... 
    return v; 
}); 
+0

谢谢你的答案。这就是我一直在寻找的东西。 – Mdb 2012-04-09 07:19:49

相关问题