Realización de actualizaciones parciales con el complemento de mapeo KnockoutJS
En este momento, estoy usando este JSON con el complemento KO Mapping y está funcionando bien:
<code>{ "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" } </code>
Ahora mi requisito es realizar "actualizaciones parciales". Algunos escenarios cuando me gustaría hacer eso:
Necesito cambiar la matriz de datos en el segundo control.Necesito actualizar solo un Control y no toda la Página (esta es la clase que estoy serializando, la raíz en este JSON).Necesito agregar otro control a mi página.Quizás otra solución sería recrear el objeto original conko.mapping.toJS(viewModel)
, cámbielo y vuelva a mapearlo nuevamente ... pero creo que saldrá con algo mejor.
EDITAR: Lo intenté conko.mapping.fromJS(updatedControl, viewModel.Controls()[0])
pero no funcionó, aquí está mi código:
<code>function (control) { $.getJSON($.format('api/control/{0}/{1}', viewModel.Name(), control.Name()), function (response) { ko.mapping.fromJS(response, viewModel.Controls()[0]); }); }, </code>
respuesta:
<code>{ "Fields": [ { "Name": "emailField", "Text": "email", "Visible": true }, { "Name": "hiddenField", "Text": "text", "Visible": true } ], "Name": "form2", "Type": "Form" } </code>
EDIT2: échale un vistazo ahttp://jsfiddle.net/faloi/4FcAy/10/