我想在每个 DS.Model
上存储一个私有(private)变量。它的目的是存储一个待处理的回调(以防我想取消它)。
我已经尝试过这个(并且它有效):
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);
}
});
我已将其放入初始化程序
中,它按照我的预期工作。
我的问题是:这是一个好的做法吗?它可能会搞砸什么吗? ...还有更好的方法吗?
就我个人而言,我对它的工作方式很满意..但我不确定它是否是“Ember”方式。这将进入 Ember-cli 插件,所以我希望它尽可能成为最“最佳实践”。 (_getPending
/_setPending
方法只能在插件内部使用。)
最佳答案
这是我对此的 2 美分。我想说,不,这不是一个好的做法,但应该没问题,因为它们只是 Ember 对象。这里的问题是 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
希望有帮助。
关于javascript - Ember-data DS.Model 中的私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38080855/