questo mi imbarazza. deve essere qualcosa di piccolo che non vedo. Sto cercando di caricare un semplice observableArray
in knockout con una chiamata Ajax.caricando un knockout.js observableArray() da .ajax() chiama
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>
Domanda: Perché la chiamata ajax di successo, che è data
valore della variabile corrisponde byte per byte del disco valore digitato, non attivare la h tml aggiorna?
grazie per aver convalidato la mia sanità mentale ... guarderò più da vicino. forse MVC succhia in un piccolo involucro o qualcosa del genere ... –
Yeh. Firebug la risposta della richiesta, verifica che stai ricevendo JSON e quindi verifica che jquery la analizzi su un oggetto. – madcapnmckay
è json per certo ... il codice C# assomiglia a 'return Json (list, JsonResponseBehavior.AllowGet);' dove 'list' è un ICollection' quindi so che è JSON. Aggiungete a ciò, che Fiddler2 mostra correttamente i dati nella sua vista JSON ... è in javascript da qualche parte. posterò di nuovo domani con più informazioni quando sono al lavoro –