3

当我创建一个新的 DS.Model 记录并在商店中调用 commit 时,我想知道该记录是何时在持久层中创建的,并且我可以访问该id属性。

我认为didCreate回调会做到这一点。但令我惊讶的id是,它仍然undefineddidCreate被调用的时候。

所以我的问题基本上是,我做错了什么,我的用例有更好的回调还是这是一个错误?

4

1 回答 1

2

嗯,看起来这个测试用例应该涵盖这个。我认为你应该提交一张罚单。

作为一种解决方法,您可以使用这些方法,请参阅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));
    }
});
于 2012-04-19T18:00:24.850 回答