IE9のノックアウト(2.1.0)とノックアウトマッピング(2.1.2)を使用すると、少し謎が浮かび上がります。何らかの理由で、オブジェクトの配列インデックスが親オブジェクトに変換されます。例えば:
ko.mapping.toJSON(attachments);
Chromeで次のようなものを生成します。
{
"UserID": 432,
"Attachments": [{
"AttachmentID": 2,
"OwnerID": 321,
"DisplayName": "sample.pdf",
"Description": "desc",
"PostDate": "2012-06-01T09:24:43.817"
}, {
"AttachmentID": 3,
"OwnerID": 432,
"DisplayName": "sample3.pdf",
"Description": "desc",
"PostDate": "2012-06-05T14:01:00.693"
}, {
"AttachmentID": 4,
"OwnerID": 543,
"DisplayName": "sample2.pdf",
"Description": "desc",
"PostDate": "2012-06-05T14:01:49.18"
}]
}
...しかし、IE9では、次のようなものが生成されます。
{
"UserID": 432,
"Attachments": {
"0": {
"AttachmentID": 2,
"OwnerID": 321,
"DisplayName": "sample.pdf",
"Description": "desc",
"PostDate": "2012-06-01T09:24:43.817"
},
"1": {
"AttachmentID": 3,
"OwnerID": 432,
"DisplayName": "sample3.pdf",
"Description": "desc",
"PostDate": "2012-06-05T14:01:00.693"
},
"2": {
"AttachmentID": 4,
"OwnerID": 543,
"DisplayName": "sample2.pdf",
"Description": "desc",
"PostDate": "2012-06-05T14:01:49.18"
}
}
}
テンプレートは添付ファイルが1次配列であることを想定しているため、これによりノックアウトバインディングが壊れます。
興味深いことに、json2のstringifyは、試したすべてのブラウザーで最初の出力(これは私が期待するものです)を返します。
誰かが以前にこの振る舞いを見たことがありますか?それを修正する方法について何かアイデアはありますか?