我正在尝试建立一个网格并通过 JSON 使用更多记录对其进行更新。在这个简单的示例中,我能够实现所需的功能,但我只能更新/推送一条 JSON 记录。我希望能够通过 JSON 添加多条记录?我怎么能做到这一点?我以为我可能必须创建某种 for 循环并将每个 JSON 结果推送到 observable 但我希望淘汰赛可能有更好的方法来通过 JSON 更新/解析?
这是我迄今为止所取得的成就的副本: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>
更新这似乎有效,但我想知道他们是否是一种更有效的方法?
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]);
};