我是 Ember CLI 的新手,我在创建数据后一直试图将数据推送到hasMany关系,但我得到了这个奇怪的错误Uncaught TypeError: Cannot read property 'push' of undefined
一切似乎没关系this.store.createRecord()
正在运作,但.findRecord .push .peekRecor
d无效。
我的控制器:
var VideoToAdd = this.store.find('video', this.get('ActiveCanvas'));
console.log(this.get('ActiveCanvas'));
VideoToAdd.get('hotspots').push(newHotspot);
视频模型
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr(),
file: DS.attr(),
hotspots: DS.hasMany('hotspot')
});
热点模型:
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr(),
onVideo: DS.belongsTo('video'),
toVideo: DS.attr()
});
请告诉我出了什么问题。
答案 0 :(得分:3)
商店的find方法是一个异步方法,它返回一个promise(实际上是一个promise对象)。当你致电VideoToAdd.get('hotspots')
时,你得到了未定义,因为承诺尚未解决;数据根本不存在。如果你等到承诺得到解决,你就可以了。
this.store.find('video', this.get('ActiveCanvas')).then(function(VideoToAdd) {
VideoToAdd.get('hotspots').pushObject(newHotspot);
});
为了回应Tom Netzband在评论中所说的内容,你需要使用Ember友好方法将一个对象添加到数组中。 pushObject
或addObject
应该有效。