Javascript 手动敲除未正确映射
我试图将JSON片段读入knockout.js中的oberservable数组,但由于某些原因,contactGroup对象的属性从未设置过,有人能解释为什么会发生这种情况吗?谢谢Javascript 手动敲除未正确映射,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我试图将JSON片段读入knockout.js中的oberservable数组,但由于某些原因,contactGroup对象的属性从未设置过,有人能解释为什么会发生这种情况吗?谢谢 "contactGroups":[ {"id":1,"name":"Test Group","contact":[{"name":"aaaaaa"},{"name":"bbbbbb"}] }] self.contactGroups = ko.observableArray([]) $(data.conta
"contactGroups":[
{"id":1,"name":"Test Group","contact":[{"name":"aaaaaa"},{"name":"bbbbbb"}]
}]
self.contactGroups = ko.observableArray([])
$(data.contactGroups).each(function(group){
var temp = new ContactGroup({id: group.id, name: group.name})
$(group.contact).each(function(contact){
var temp_contact = new Contact(contact)
temp.contact.push(temp_contact)
});
self.contactGroups.push(temp);
})
function ContactGroup(data){
var self = this;
self.id = data.id;
self.name = ko.observable(data.name);
self.contact = ko.observableArray([]);
function Contact(){
this.name = ko.observable();
this.email = ko.observable();
this.telephone = ko.observable();
this.mobile = ko.observable();
this.mail_group = ko.observable();
this.comment = ko.observable();
}
self.addContact = function(){
self.contact.push(new Contact);
}
self.removeContact = function(){
self.contact.remove(this);
}
}
可观察数组是函数,因此如果要设置可观察数组,应使用
self.contactGroups(数组)代码>而不是self.contactGroups.push(临时)
谢谢你的帮助。我明白这一点,但这并不能解决我的问题。我试图在ContactGroup对象的每个数组中创建一个Contact对象数组创建一个JSFIDLE可能吗?你想要的输出是什么?还不清楚。
self.map = function() {
var groupArr = [];
ko.utils.arrayForEach(this.items(), function(item) {
var temp_contact = new Contact(contact)
temp.contact.push(temp_contact)
groupArr.push(temp)
});
self.contactGroups (groupArr);
}