我想在每个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
方法只能在插件内部使用。)
答案 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
希望它有所帮助。