2015-09-05 38 views
1

Ember很有趣,但文檔確實很薄。如何使用Ember Data創建新記錄並立即將其添加到其他記錄上的hasMany屬性?

我成功顯示Ember數據記錄的層次結構,現在我想允許用戶在父(部門)的上下文中添加新的子項(人員)。

我原以爲下面的代碼可以工作,但事實並非如此。當newPerson被添加到數據存儲中時,該人員不會被添加到部門,並且在控制檯中出現錯誤。這個問題的獎金將是如何解釋Ember Data錯誤的信息,因爲它們非常不透明。我甚至無法弄清楚Google的哪部分內容。這裏我認爲相關部分的錯誤是Promise.prototype._onError

addPerson(deptid) { 
     var newID = Math.random().toString(16).slice(2); 
     var newPerson = this.store.createRecord('person', { 
      name: "Person Name", 
      id: newID, 
      devices: [] 
     }).save(); 

     this.store.find('department', deptid).then(function (department) { 
      department.pushObject(newPerson); 
     }); 
    } 

回答

1

我懷疑你想pushObjectdepartment記錄。 pushObject相當於push陣列,department是一個單獨的記錄。您可能想要抓取部門記錄上的hasMany集合並在其上使用`pushObject。

var newPerson = this.store.createRecord('person', { 
     name: "Person Name", 
     id: newID, 
     devices: [] 
    }); 
    newPerson.save(); 

    this.store.find('department', deptid).then(function (department) { 
     department.get('peeps').pushObject(newPerson); 
    }); 
+0

Doh!當然。您的建議消除了錯誤,但創建了一個新的錯誤。這個控制檯的輸出包括諸如「assertPolymorphicType」和「notifyRecordRelationshipAdded」之類的東西。但是我的部門模型肯定包含了'窺視:DS.hasMany('person')'。 – ed94133

+0

哎呀,我們試圖添加承諾(從保存方法返回),而不是記錄。 – Kingpin2k

+1

修好了!謝謝! – ed94133

相關問題