当我创建一个新的 DS.Model 记录并在商店中调用 commit 时,我想知道该记录是何时在持久层中创建的,并且我可以访问该id
属性。
我认为didCreate
回调会做到这一点。但令我惊讶的id
是,它仍然undefined
是didCreate
被调用的时候。
所以我的问题基本上是,我做错了什么,我的用例有更好的回调还是这是一个错误?
当我创建一个新的 DS.Model 记录并在商店中调用 commit 时,我想知道该记录是何时在持久层中创建的,并且我可以访问该id
属性。
我认为didCreate
回调会做到这一点。但令我惊讶的id
是,它仍然undefined
是didCreate
被调用的时候。
所以我的问题基本上是,我做错了什么,我的用例有更好的回调还是这是一个错误?
嗯,看起来这个测试用例应该涵盖这个。我认为你应该提交一张罚单。
作为一种解决方法,您可以使用这些方法,请参阅http://jsfiddle.net/pangratz666/ZkQHE/:
App.IdWatcher = Ember.Mixin.create({
init: function() {
this._super();
this.addObserver('data', this, '_dataDidChange');
},
_dataDidChange: function() {
var id = this.get('id');
if (id) {
this.idHasBeenDefined(id);
this.removeObserver('data', this, '_dataDidChange');
}
}
});
App.Model = DS.Model.extend(App.IdWatcher, {
label: DS.attr('string'),
idHasBeenDefined: function(id) {
console.log('id is set to %@'.fmt(id));
}
});