1

内部配列の特定のプロパティを監視できないようにプラグインに指示する方法がわかりません。

この JSON をデータとして取得します。

{
    Id: 1,
    Description: "test",
    Roles: [{ Id: 1, Name: "Role 1" }, { Id: 2, Name: "Role 2" }]
}

Roles 配列は観察可能である必要がありますが、どのアイテムの「Id」フィールドも観察可能にしたくありません。さまざまなアプローチを試みていますが、うまくいきません:

ko.mapping.fromJS(data, { 'copy': [ "Roles.Id" ] });
ko.mapping.fromJS(data, { 'copy': [ "Roles[].Id" ] });
ko.mapping.fromJS(data, { 'copy': [ "Roles[0].Id" ] }); // this only works with the first item

何か案は?

4

2 に答える 2

1

問題の直接的な解決策があるかどうかはわかりません。配列の子孫に移動しようとしましたが、 (あなたの試みのように) 何も機能しませんでしたが、アイテムオブジェクトRolesのモデルを定義することで簡単なトリックを作成できます:Roles

function RolesModel(id, name) {
    this.Id = id;
    this.Name = ko.observable(name);
}

次に、マッピング構成を使用して、次のRolesようにオブジェクトの作成を制御します。

var mapping = {
    'Roles': {
        create: function (options) {
            return new RolesModel(options.data.Id, options.data.Name)
        }
    }
}

私があなたに言ったように、私は直接的な解決策を知りませんが、これはうまくいくでしょう. 親切に私のデモをチェックしてください

于 2013-07-17T14:08:52.480 に答える