1

ノックアウト.jsのノックアウト.マッピングプラグインを使用すると、コレクション内のアイテムを次のように作成する方法をカスタマイズできます:-

var ItemModel = function (data) {
    ko.mapping.fromJS(data, {}, this);
    this.FooProperty = ...;
};

var mapping = {
    'Items': {
        create: function (options) {
            return new ItemModel(options.data);
        }
    }
}

this.Items = ko.mapping.fromJS(データ、マッピング);

これは、コレクションを含むプロパティ「Items」がデータに含まれていることを前提としています。しかし、データが単なる JSON 配列の場合はどうなるでしょうか? 受信データの最上位ルートにあるアイテムに作成関数をフックするにはどうすればよいですか?

ドキュメントを見ると、マッピング オブジェクトのキーは、操作対象のデータのプロパティ名にするか、インクルード、無視、コピーのいずれかにすることができるようです。このことから、受信した JSON をプロパティを使用してオブジェクトにラップし、マップしてから、結果をアンラップしない限り、目的を達成する方法がわかりません。

4

1 に答える 1

3

createマッピングオブジェクトの最上位に関数を配置して、ルートオブジェクトを処理できます。

好き:

var mapping = {
    create: function(options) {

    }
};

または、次のように渡すこともできます。

ko.mapping.fromJS({ Items: data });

しかし、多分あなたはそれを避けようとしていたようです。

于 2012-10-07T23:43:09.447 に答える