배열이 객체 내에 중첩되어있는 경우 Knockout.js 매핑 플러그인의 'create'및 'update'콜백이 호출되지 않습니다. 사람이 기대할 때. 특히, view_model.mappedCreate({})
을 호출하면 콜백이 트리거 될 것으로 예상됩니다. 여기 Knockout.js 매핑 플러그인이 객체의 배열의 '생성'또는 '업데이트'속성을 호출하지 않습니다.
var data = {
Test: {
Items: [
{ Name: "Red", Count: 0},
{ Name: "Green"}
]
},
NewItem: ""
},
counter = 0;
var vm = ko.mapping.fromJS(data, {
Test: {
Items: {
create: function(options) {
options.data.Count = ++counter;
console.log("Data:", options.data);
return ko.mapping.fromJS(options.data);
},
update: function(options) {
options.data.Count = ++counter;
console.log("Data:", options.data);
return ko.mapping.fromJS(options.data);
}
}
}
});
가 this jsFiddle에서 볼 수 있듯이, 상기의 출력은 : 또한
{
"Test": {
"Items": [
{
"Name": "Red",
"Count": 0
},
{
"Name": "Green"
}
]
},
"NewItem": ""
}
상기 console.log
명령문이 호출되지 않습니다.
Items
의 두 번째 요소는 {"Name": "Green", "Count": 1 }
이고 console.log 문은 실행될 것으로 예상됩니다.
Items
이 중첩되지 않으면 예상대로 작동합니다 (this jsFiddle 참조).
나는 분명히 뭔가를 간과 할 가능성이 있지만 어떤 경우 든이 문제를 해결하는 방법에 대한 통찰력과 제안에 감사 할 것입니다.