javascript - Ember-data DS.Model 中的私有(private)变量

标签 javascript ember.js ember-data

我想在每个 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/

相关文章:

javascript - 对于JavaScript事件,冒泡比捕获好吗?

javascript - 使用javascript检测文本中的换行符

javascript - 为什么我的数据没有显示在文本框中?

javascript - 无法从 ember 中的路线操作获取模型

javascript - 从 Brocfile 中的构建中排除文件夹

javascript - Localhost 返回 "Undefined"而不是唯一 ID

javascript - 获取 Ember 中所有可用的模板

ember.js - emberjs new-router-V3/controller 无法使用 ember-data 创建或编辑记录

javascript - HTTP 请求后数据未显示在 Ember 应用程序中

javascript - 使用 Mixins 访问 Ember Controller