2012-04-06 6 views
0

フレンド。私は次の問題があります。私は2つの観測可能な配列を持っています。オブジェクトの配列をループし、その値のみを別の配列に追加します。ノックアウト

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); 

欠点これではいつでも「NamesArray」変化「ValueArray」は更新されませんということです。あなたは「ValueArrayは」「NamesArray」(!とのみ)で見つけることができるすべての名前を含む配列になりたい場合は、代わりに計算された、観察を使用することができます。

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

は答えをいただき、ありがとうございます。これは私が探していたものでした。 – Mdb

関連する問題