Прямо сейчас я использую этот JSON с плагином KO Mapping, и он работает нормально:
{
"Controls": [
{
"Fields": [
{
"Name": "emailField",
"Text": "email",
"Visible": true
},
{
"Name": "hiddenField",
"Text": "text",
"Visible": true
}
],
"Name": "form2",
"Type": "Form"
},
{
"Data": [
[
"Federico Aloi",
20
],
[
"Andres Lopez",
31
],
[
"Pablo Perez",
32
]
],
"Fields": [
{
"Name": "nameField",
"Text": "Nombre",
"Visible": true
},
{
"Name": "ageField",
"Text": "Edad",
"Visible": true
}
],
"Name": "datagrid1",
"Type": "Datagrid"
}
],
"Name": "pagina1",
"Title": "Probando el KO"
}
Теперь мой требованием является выполнение «частичных обновлений». В некоторых сценариях, когда я хочу это сделать:
Возможно, другим обходным решением было бы воссоздание исходного объекта с помощью ko.mapping.toJS(viewModel)
, изменение его и затем повторно-сопоставление... но я верю, что у вас получится нечто лучшее.
РЕДАКТИРОВАТЬ:Я пробовал с ko.mapping.fromJS(updatedControl, viewModel.Controls()[0])
, но это не сработало, вот мой код:
function (control) {
$.getJSON($.format('api/control/{0}/{1}', viewModel.Name(), control.Name()), function (response) {
ko.mapping.fromJS(response, viewModel.Controls()[0]);
});
},
ответ:
{
"Fields": [
{
"Name": "emailField",
"Text": "email",
"Visible": true
},
{
"Name": "hiddenField",
"Text": "text",
"Visible": true
}
],
"Name": "form2",
"Type": "Form"
}
РЕДАКТИРОВАТЬ2:проверьте его по адресуhttp://jsfiddle.net/faloi/4FcAy/10/