2012-04-06 98 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

相關問題