JSON üzerinden bir ızgara oluşturmaya ve daha fazla kayıt ile güncellemeye çalışıyorum. Bu basit örnekte gerekli işlevselliği başarabiliyorum ancak sadece bir JSON kaydını güncelleyebiliyorum/itebiliyorum. JSON üzerinden birden fazla kayıt ekleyebilmek ister misiniz? Bunu nasıl başarabilirim? Bir çeşit döngü oluşturmak ve her bir JSON sonucunu gözlemlenebilir duruma getirmek zorunda kalabileceğimi düşündüm, ancak nakavtun JSON üzerinden daha iyi bir güncelleme/ayrıştırma yolu bulabileceğini umuyordum?Güncelleme Knockout.js JSON tarafından gözlemlenebilir
İşte şu ana kadar elde ettiklerimizi bir kopyası: 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>
Güncelleme bu iş gibi görünüyor ama daha verimli bir yöntem onların olup olmadığını merak? ko kullanın) http://jsfiddle.net/johnpapa/nfnbD/
1:
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]);
};
Gözlemlenebilir Dizinizi sayfanızın herhangi bir yerinden güncelleştirmek isterseniz, modelinizin örnek değişkenini oluşturmanız gerekebilir. Örneğin; 'var myModelInstance = new ViewModel();' 'ko.utils.arrayPushAll (myModelInstance.users(), dataFromServer);' 'myModelInstance.users.pushall –
bu hala sürüm 3.1 ile gitmek için yolu var mı? – Homer
Homer ile aynı soruyu soruyorum. 'PushAll' zaten 3.1 sürümünden beri KnockoutJs çekirdeğindedir. – Samuel