0

ノックアウト マッピング プラグインを使用しています。私が取得している簡略化された json は、名前のない配列の形式です。

[
 {"ID":1,"Title":"Title 1"},
 {"ID":2,"Title":"Title 2"},
 {"ID":3,"Title":"Title 3"}
]

ビューモデルに名前付きの「アイテム」プロパティを含めるために、次のように割り当てています。

var model = { Items: ko.mapping.fromJS(jsondata, mappingOptions) }  

マッピング プロセス中に isDirty プロパティを追加できません。私はこれに間違った方法でアプローチしているのではないかと思い始めています。

ここにJsFiddleがあります

アップデート

以下の回答に基づいた動作中のJsFiddleを次に示します。

4

1 に答える 1

1

The issue you're seeing in your fiddle is that your "create" method of your mapping is not being called.

You've defined your mapping as

var mappingOptions = {
    Items: {
        create: function (mappingoptions) {            
            ...
        }
    }
};

so the ko.mapping is looking for an array property of your data object called "Items", on each item of which it will run the "create" method. However, your data object "jsn" does not have a collection named "Items".

  var jsondata = [
    {"ID":1,"Title":"Title 1"},
    {"ID":2,"Title":"Title 2"}
  ]

If you change your jsondata to be :

var jsondata = { 
    Items : [
        {"ID":1,"Title":"Title 1"},
        {"ID":2,"Title":"Title 2"}
    ]
}

you should see the "create" method execute and your isDirty flags will be added.

You could also change your mapping to eliminate the "Items" :

var mappingOptions = {
    create: function (mappingoptions) {            
        ...        
    }
};

Hope this helps!

于 2013-06-20T21:05:20.703 に答える