2013-07-18 59 views
0

我想讀一個JSON代碼插入在knockout.js的oberservable陣列,但由於某種原因,contactGroup對象的屬性永遠不會設置,任何人都可以擺脫任何光線上爲什麼出現這種情況?謝謝!淘汰賽沒有正確映射手動

"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); 
     } 
    } 

回答

0

觀察的陣列功能,因此如果要設置一個可觀察陣列,則應使用self.contactGroups(array);代替self.contactGroups.push(溫度);

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); 
    } 
+0

感謝您的幫助。我明白這一點,但它不能解決我的問題。我試圖創建ContactGroup對象的每個數組中的Contact對象的數組 – Wellso

+0

創建一個jsfiddle也許?你想要什麼輸出。它不清楚。 – adt