esto me desconcierta. debe ser algo pequeño que no estoy viendo. Estoy tratando de cargar un observableArray
muy simple en knockout con una llamada ajax.cargando un knockout.js observableArray() desde .ajax() llama
Javascript
// we bind the array to the view model property with an empty array.
var data = [];
var viewModel = {
vendors: ko.observableArray(data)
};
ko.applyBindings(viewModel);
$(function() {
// on this click event, we popular the observable array
$('#load').click(function() {
// WORKS. Html is updated appropriately.
viewModel.vendors([{ "Id": "01" },{ "Id": "02" },{ "Id": "03" }]);
// DOES NOT WORK. Fiddler2 shows the same exact json string come back
// as in the example above, and the success function is being called.
$.ajax({
url: '/vendors/10',
dataType: 'json',
success: function (data) {
viewModel.vendors(data);
}
});
});
});
html
<button id="load">Load</button>
<ul data-bind="template: { foreach: vendors }">
<li><span data-bind="text: Id"></span></li>
</ul>
Pregunta: ¿Por qué el éxito llamada AJAX, que es data
valor de la variable coincide con el byte por byte del disco valor mecanografiado, no desencadenar la h tml actualizar?
gracias por validar mi cordura ... volveré a mirar más de cerca. tal vez MVC chupa una pequeña envoltura o algo ... –
Yeh. Firebug la respuesta de solicitud, verifica que estás obteniendo json y luego verifica que jquery lo esté analizando en un objeto. – madcapnmckay
es seguro ... el código de C# parece 'return Json (list, JsonResponseBehavior.AllowGet);' donde 'list' es un ICollection' así que sé que es JSON. Además, Fiddler2 muestra los datos en su vista JSON correctamente ... está en javascript en alguna parte. volveré a publicar mañana con más información cuando estoy en el trabajo –