我目前正在使用knockout.js框架。我已经填写了基本联系表example并根据我自己的需要进行修改。我可以将这些值存储在我的数据库中。我很难从服务器加载值。我保存了两个联系人。加载值时,它会显示联系人的两个字段,但值为空。我正在检查控制台日志 ajax 请求,它正在返回值。如何正确从服务器加载值? DEMO
var ContactsModel = function (contacts) {
var self = this;
self.contacts = ko.observableArray(ko.utils.arrayMap(contacts, function (contact) {
return {
firstName: contact.firstName,
lastName: contact.lastName,
phone: contact.phone,
alt_phone: contact.alt_phone,
main1: ko.observable(contact.main1),
main2: ko.observable(contact.main2)
};
}));
self.addContact = function () {
self.contacts.push({
firstName: "",
lastName: "",
phone: "",
alt_phone: "",
main1: false,
main2: false
});
};
self.removeContact = function (contact) {
self.contacts.remove(contact);
};
self.addPhone = function (contact) {
contact.phones.push({
number: ""
});
};
self.removePhone = function (phone) {
$.each(self.contacts(), function () {
this.phones.remove(phone)
})
};
self.save = function () {
self.lastSavedJson(JSON.stringify(ko.toJS(self.contacts), null, 2));
};
self.lastSavedJson = ko.observable("");
};
$.getJSON("functions/getPerson.php", function(allData) {
var initialData = $.map(allData, function(person) { return new ContactsModel(person) });
ko.applyBindings(new ContactsModel(initialData));
});
最佳答案
删除此行:
varinitialData = $.map(allData, function(person) { return new ContactsModel(person) });
并尝试使用ko.applyBindings(new ContactsModel(allData));
(与allData)。
而不是:ko.applyBindings(new ContactsModel(initialData));
关于javascript - 从服务器加载 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22125084/