ember.js - 如何在 Ember 2.13.0 中检测和保存关系更改?

标签 ember.js ember-data ember.js-2

我有文件 list 。每个文档都有 定义的客户端属性属于 .

当用户在其中一个文档中更改客户端时,我想在计数器中显示更改了多少文档。并且当用户决定他将按下“发布”按钮,这会将文档客户端更改保存到 api。

ember 2.13 中的 DS.Model 具有参数 (https://emberjs.com/api/data/classes/DS.Model.html):

hasDirty 属性,
脏类型


他们俩都对没有反应属于/HasMany 由 Ember 更改 设计 .我看到了很多关于这个主题的答案,但我没有看到任何 isDirty() 2.13 文档中的模型方法,也没有任何 .send("变脏") 手动将文档模型设置为脏状态的方法?我还看到了一些旧版 Ember 的插件/mixin。

但我的问题是,Ember 创作者如何“建议/建议/最佳实践”来处理这个问题。是否有一些不需要任何第三方插件的基本方式/手动解决方案?就像可能对模型中的每个关系使用 onchange 观察者?或者使用 @each.dirtyType 的计算属性用于子相关模型(或者甚至设置子项本身不会被标记为脏?)?

Ember 2.13 中的沙盒解决方案是什么?

最佳答案

已经有一段时间了。对于has-man,我使用这个解决方案。如果用户更改了与以前相同的项目组的多关系,“isTasksDirty”将返回 false:

/* RELATIONS DIRTINESS */
    isRelationDirty: Ember.computed(
        'isDepartmentsDirty',
        'isTasksDirty'
        {
            get(key) {
                return this.get("isDepartmentsDirty") ||
                       this.get("isTasksDirty");
            },
            set(key, value) {
                this.set("isDepartmentsDirty", value);
                this.set("isTasksDirty", value);
            }
        }
    ),

    isTasksDirty:false,
    tasksChanged: Ember.observer('tasks.[]', function() {
        if(!arraysEqual(this.get("tasks").content.currentState, this.get("tasks").content.canonicalState)){
        this.set("isTasksDirty", true);
    } else {
        this.set("isTasksDirty", false);
    }
}),

关于ember.js - 如何在 Ember 2.13.0 中检测和保存关系更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43947061/

相关文章:

ember.js - 模型 promise 导致模板使用 .content

ember.js - Ember 和 Rails 多态关系

ember.js - 如何使用 ember 2.3 在一个模板文件中渲染多个导出

ember.js - Ember appkit - 调试

sproutcore - 设置和拆卸(和 self 失效)EmberJS View

javascript - 某些 HTML 表单元素在 Ember 模态中不起作用

node.js - 如何将项目迁移到yarn Flat模式?

ember.js - Ember 数据剩余适配器错误处理不起作用

ember.js - 如何将多个参数传递给 Ember2.3 中 select 元素的 onChange 操作

javascript - 在 Ember.js 2.3 中,如何将 hasMany 异步调用编译为 ember 中的一个调用而不是多个调用?