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/

4

1 に答える 1

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;
});
于 2012-04-07T16:45:23.303 に答える