2016-06-28 45 views
0

我想在每个DS.Model上存储一个私有变量。它的目的是存储待处理的回调(以防我想取消它)。Ember-数据DS.Model中的私有变量

我曾经尝试这样做(和它的作品):

DS.Model.reopen({ 
    init() { 
    let _pending; // my private var 

    this._getPending =() => _pending;     // get private var 
    this._setPending = callback => _pending = callback; // set private var 

    this._super(...arguments); 
    } 
}); 

我已经在initializer放在这个,和它的作品,因为我希望它。

我的问题是:这是一个很好的做法吗?它可能会搞砸了吗? ...还有更好的方法吗?

就我个人而言,我很满意它的工作方式..但我不确定它是否是“Ember”方式。这将进入一个Ember-cli插件,所以我希望它是最可能的“最佳实践”。 (_getPending/_setPending方法只能在插件内部使用。)

回答

1

这是我的2美分。我会说不,这不是一个好习惯,但它应该没问题,因为他们只是Ember Objects。这里的问题是Ember数据模型用于什么?从文档它说:

“模型是代表您的应用程序呈现给用户的底层数据的对象。”

根据定义,这不是他们所设计的,所以只是因为你能够这样做并不意味着你应该像这样使用它们。

等待回调,所以可以取消? Ember模型API定义了可用于此目的的状态对象。 http://emberjs.com/api/data/classes/DS.Model.html像isDeleted,isValid,isNew这样的标志给出了所有可能的状态。

我会将它们放在路由器动作中,在这些动作中它们很容易通过集成测试进行测试。

您可以检查此截屏,说明他们:

https://www.emberscreencasts.com/posts/102-ember-data-20-model-states-and-flags

希望它能帮助。