4

ViewModel観察可能な配列を持つノックアウト.jsがあります:

function ItemsViewModel() {
    this.data = ko.observableArray([
        new Item(1, "One description"),
        new Item(2, "Two description"),
        new Item(3, "Three description"),
        // ... etc
    ]);
}

アイテムは次のようになります。

function Item(id, name) {
    this.id = ko.observable(id);
    this.name = ko.observable(name);
};

私が作成した観察可能な配列に基づいて、ViewModel次のような2番目の計算配列を作成したいと思います。

function ItemsViewModel() {
    this.data = ko.observableArray([
        new Item(1, "One description"),
        new Item(2, "Two description"),
        new Item(3, "Three description"),
        // ... etc
    ]);

    this.computedData = // here I want to create a computed array based on the values
                        // of this.data
}

この計算された配列を作成する方法の例が、knockout.js ドキュメントのどこにも見つからないようです。最初の配列を次の形式の計算配列に変換する方法の例を教えてください。

this.computedData = [
    { dataItem: data[0].name + ' ' + data[0].id },
    { dataItem: data[1].name + ' ' + data[1].id },
    // ... etc.
]
4

1 に答える 1

11

computedこれにはオブザーバブルを使用できます。

self.computedData = ko.computed(function() {
    return ko.utils.arrayMap(self.data(), function(item) {
        return { dataItem: item.name() + ' ' + item.id() };
    });
});

これが実際の例です:http://jsfiddle.net/vyshniakov/3fesA/1/

ドキュメントで計算の詳細を読む: http://knockoutjs.com/documentation/computedObservables.html

于 2012-11-28T13:33:23.450 に答える