При использовании нокаута (2.1.0) и нокаута (2.1.2) в IE9 возникла небольшая загадка. По какой-то причине индексы массива объектов превращаются в родительские объекты. Например:
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"
}
}
}
Это нарушает мои нокаутирующие привязки, потому что шаблон ожидает, что вложения будут массивом первого порядка.
Интересно, что json2 stringify возвращает первый вывод (чего я и ожидал) в каждом браузере, который я пробовал.
Кто-нибудь видел такое поведение раньше? Любые идеи о том, как это исправить?