Intento establecer una grilla y actualizarla con más registros a través de JSON. En este sencillo ejemplo, puedo lograr la funcionalidad requerida pero solo puedo actualizar/presionar un registro JSON. Me gustaría poder agregar varios registros a través de JSON? ¿Cómo podría lograr esto? Supuse que tendría que crear algún tipo de bucle y empujar cada resultado JSON a lo observable, pero esperaba que el nocaut pudiera tener una mejor forma de actualizar/analizar a través de JSON.Update Knockout.js Observable from JSON
Aquí está una copia de lo que he conseguido hasta ahora: http://jsfiddle.net/sparkhill/crSbt/
function Users(user_id, password) {
this.user_id = ko.observable();
this.password = ko.observable();
}
var viewModel = {
users: ko.observableArray([]),
addUser: function() {
this.users.push({
user_id: "",
password: ""
});
},
addJSON: function() {
//Works Fine
var JSONdataFromServer
='{"user_id":"frances","password":"password"}';
//More than one result - wont map - Would Ideally like to map lots of records at one time
//var JSONdataFromServer ='{"user_id":"frances","password":"password"}, {"user_id":"frances","password":"password"}';
var dataFromServer = ko.utils.parseJson(JSONdataFromServer);
this.users.push(dataFromServer);
//Tried
//this.users.push(JSON.parse(JSONdataFromServer));
}
};
viewModel.users();
ko.applyBindings(viewModel);
</script>
Actualización esto parece funcionar, pero me pregunto si su es un método más eficiente?
addJSON: function() {
//Works Fine
var JSONdataFromServer
='[{"user_id":"frances","password":"password"},{"user_id":"timmy","password":"password"}]';
var results = JSON.parse(JSONdataFromServer);
var i = results.length;
for(var i = 0; i < results.length; i++){
this.users.push(results[i]);
};
tenga en cuenta que puede necesitar crear una variable de instancia de su modelo si desea actualizar su array observable desde algún lugar de su página, fuera del modelo real en sí, por ejemplo: 'myModelInstance var = nuevo modelo de vista();' ' ko.utils.arrayPushAll (myModelInstance.users(), dataFromServer);' ' myModelInstance.users.pushall –
¿sigue siendo el camino a seguir con la versión 3.1? – Homer
Hago la misma pregunta que Homer. Es 'pushAll' ya en el núcleo de KnockoutJs desde la versión 3.1. – Samuel