gpt4 book ai didi

ember.js - 当我更改 Ember-Data 中的 hasMany/belongsTo 关系时,如何使父级变脏?

转载 作者:行者123 更新时间:2023-12-03 22:23:25 25 4
gpt4 key购买 nike

我现在对 Ember Data 的主要问题是,当我更改关系(hasMany 或belongsTo)时,父级不会变脏。

我需要这个,因为:

  • 我依赖于 isDirty显示保存/取消按钮的属性
  • hasMany 和belongsTo id 是与父级一起发送的,因此父级实际上是脏的。

  • 此外,当我回滚父级时,只有belongsTo 关系被恢复。 hasMany 模型保持不变。

    我找到了 this issue说的是 dirtyRecordsForHasManyChange钩,但这似乎不存在于 Ember Data v1(v1.0.0-beta.3,这是我正在使用的)。

    我怎样才能做到这一点?

    谢谢。

    最佳答案

    对于belongsTo,我添加了一个观察者。

    例如,在我的人中,我有一个属于省的人。在我的表格上,我有一个针对各省的 ember 选择。在 Person 模型中,我添加了这个观察者...

    provinceChanged: function() {
    this.send('becomeDirty');
    }.observes('province')

    我也依赖 isDirty 来显示/隐藏保存/取消按钮,虽然该观察者在将记录标记为脏记录方面做得很好,但如果我点击取消,我会进行回滚,但我也需要将记录标记为干净。我在取消操作的 Person Controller 中执行此操作。
    cancel: function() {
    this.get('model').rollback();
    this.set('isEditing', false);
    this.get('model').adapterWillCommit();
    this.get('model').adapterDidCommit();
    }

    这一切似乎运作良好。

    对于另一个项目中的 hasMany,我们在 Controller 上使用了计算属性。
    isThisOrChildrenDirty: function() {
    return this.get('isDirty') || this.get('authors').get('isDirty');
    }.property('isDirty','authors.@each.isDirty')

    然后我们检查 isThisOrChildrenDirty 而不是检查 isDirty。

    希望这有帮助。

    关于ember.js - 当我更改 Ember-Data 中的 hasMany/belongsTo 关系时,如何使父级变脏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19998523/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com