編輯:jsbin的問題。請參閱IndexController的testAddTom操作方法中的註釋。ArrayController pushObject reference.type error
我有一個控制器,將模型對象添加到我的應用程序中的另一個ArrayController。然而,當我在ArrayController上調用pushObject時會拋出一個錯誤...
Uncaught TypeError: Cannot call method '_create' of undefined ember-data-latest.js:2769 DS.Store.Ember.Object.extend.materializeRecord ember-data-latest.js:2769 DS.Store.Ember.Object.extend.recordForReference ember-data-latest.js:1871 DS.RecordArray.Ember.ArrayProxy.extend.objectAtContent ember-data-latest.js:309 superWrapper ember.js:1044 Ember.ArrayProxy.Ember.Object.extend.objectAt ember.js:11475 superWrapper ember.js:1044 Ember.ArrayController.Ember.ArrayProxy.extend.objectAtContent ember.js:13111 superWrapper ember.js:1044 Ember.ArrayProxy.Ember.Object.extend.objectAt ember.js:11475 superWrapper ember.js:1044 Ember.Array.Ember.Mixin.create.arrayContentDidChange ember.js:8955 Ember.ArrayController.Ember.ArrayProxy.extend.arrayContentDidChange ember.js:13147 superWrapper ember.js:1044 Ember.ArrayProxy.Ember.Object.extend.arrangedContentArrayDidChange ember.js:11582 sendEvent ember.js:2432 Ember.Array.Ember.Mixin.create.arrayContentDidChange ember.js:8946 Ember.ArrayProxy.Ember.Object.extend.arrangedContentArrayDidChange ember.js:11582 sendEvent ember.js:2432 Ember.Array.Ember.Mixin.create.arrayContentDidChange ember.js:8946 Ember.Mixin.create.replace ember.js:12016 Ember.ArrayProxy.Ember.Object.extend.replaceContent ember.js:11371 Ember.ArrayProxy.Ember.Object.extend._replace ember.js:11487 Ember.ArrayProxy.Ember.Object.extend.replace ember.js:11493 Ember.ArrayProxy.Ember.Object.extend.replaceContent ember.js:11371 Ember.ArrayProxy.Ember.Object.extend._replace ember.js:11487 Ember.ArrayProxy.Ember.Object.extend._insertAt ember.js:11501 Ember.ArrayProxy.Ember.Object.extend.pushObject
模型對象不是新的,它早已被取出。如果我改爲獲取ArrayController內容,請將其轉換爲數組,然後將該對象推送到該數組,然後重新設置ArrayController.content,它可以正常工作。
我的問題是爲什麼不pushObject工作?這似乎是正確的做法。
打破pushObject代碼示例...
App.TaskController.reopen({
needs: ['reminder'],
showReminderForTask: function(reminder) {
var reminders = this.get('controllers.reminders');
if (!reminders.content.contains(reminder)) {
reminders.pushObject(reminder);
}
}
});
其中工程ArrayController.content例如....
App.TaskController.reopen({
needs: ['reminder'],
showReminderForTask: function(reminder) {
var reminders = this.get('controllers.reminders');
if (!reminders.content.contains(reminder)) {
var content = reminders.content.toArray();
content.push(reminder);
reminders.set('content', content);
}
}
});
感謝您的回答,直觀的像素。你的例子完美地工作,但是當使用模型時,在pushObject上拋出同樣的錯誤。這是我的意思是[jsbin](http://jsbin.com/uniyel/2/edit)。 也許這是一個與燼數據錯誤? – cootetom