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/

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”中找到的名称的数组(并且只有那些!),您可以使用计算的 observable 代替:

self.ValueArray = ko.computed(function() {
    var n = self.NamesArray(), v = [];
    // ...same for loop as above...
    return v;
});
于 2012-04-07T16:45:23.303 回答