Ember-data DS.Model

时间:2016-06-28 15:50:56

标签: javascript ember.js ember-data

我想在每个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 个答案:

答案 0 :(得分:1)

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

“模型是表示应用程序向用户提供的基础数据的对象。”

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

待回拨以便取消? 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

希望它有所帮助。