Tôi đang cố thiết lập lưới và cập nhật lưới bằng nhiều bản ghi hơn thông qua JSON. Trong ví dụ đơn giản này, tôi có thể đạt được các chức năng cần thiết nhưng tôi chỉ có thể cập nhật/đẩy một bản ghi JSON. Tôi muốn có thể thêm nhiều bản ghi thông qua JSON? Làm thế nào tôi có thể đạt được điều này? Tôi giả sử tôi có thể phải tạo ra một số loại vòng lặp và đẩy mỗi kết quả JSON đến quan sát được nhưng tôi hy vọng rằng loại trực tiếp có thể có cách tốt hơn để cập nhật/phân tích cú pháp thông qua JSON?Cập nhật Knockout.js Có thể quan sát được từ JSON
Heres một bản sao của những gì tôi đã đạt được cho đến nay: 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>
Cập nhật này dường như làm việc nhưng tôi tự hỏi, nếu họ là một phương pháp hiệu quả hơn?
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]);
};
lưu ý rằng bạn có thể cần phải tạo biến mẫu của mô hình nếu bạn muốn cập nhật observableArray từ một nơi nào đó trong trang của mình, bên ngoài chính mô hình thực tế, ví dụ: 'var myModelInstance = new ViewModel(); ' ' ko.utils.arrayPushAll (myModelInstance.users(), dataFromServer);' 'myModelInstance.users.pushall –
đây có phải là vẫn còn con đường để đi với phiên bản 3.1? – Homer
Tôi hỏi cùng câu hỏi với tên Homer. Là 'pushAll' đã có trong cốt lõi của KnockoutJs kể từ phiên bản 3.1. – Samuel