我有一个指向一个人的拨号器:
App.Dialer = DS.Model.extend({
created_at: DS.attr('date'),
person: DS.belongsTo('App.Person'),
didCreate: function() { alert('didCreate: ' + this + ', ' + this.get('person')); }
});
App.Person = DS.Model.extend({
name: DS.attr('string'),
dialers: DS.hasMany('App.Dialer')
});
我创建了一个新的拨号器:
var d = App.store.createRecord(App.Dialer, {
person: App.Person.find(1)
});
alert('before commit: ' + d + ', ' + d.get('person'));
App.store.commit();
alert('after commit: ' + d + ', ' + d.get('person'));
它在服务器上正确创建记录,并正确设置了 person_id。调用 commit() 之前和之后的两个警报语句也可以正常工作,同时填充了 dialer 对象和它的 person 对象。
但是,在创建记录后,当 Ember 调用我的 didCreate 事件处理程序时,人员关联消失了,而当我调用 this.get('person') 时,我得到了 'null',即使 'this' 的值是新的 dialer 对象,与前两个警报具有相同的 id。