【问题标题】:EmberJS computed property getter infinite loopEmberJS 计算属性 getter 无限循环
【发布时间】:2016-11-03 21:48:27
【问题描述】:

我有一个计算属性,并希望通过 get / set 语法跟踪其最新值:

myProperty: Ember.computed({
    get: function () {
        ?
    },
    set: function (key, value) {
        let currentValue = this.get('myProperty');

        this.set('oldMyProperty', currentValue);
        return value;
    }
})

但老实说,我不知道如何处理吸气剂。调用this.get('myProperty') 将导致无限循环。但是,仅使用 this.myProperty 还远远不够,只会返回计算属性本身,而不是值。有没有办法可以省略 getter,让它只解析为当前值?

在通过 slack 与 ember 社区交谈后,他们的建议是保持旧值和新值(可能使用 ES6 Symbols 以避免意外引用它们)。我只是好奇是否有一种更简单的方法可以让 get 默认为正常查找。

这就是我的工作:
https://guides.emberjs.com/v2.3.0/object-model/computed-properties/

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    get 返回初始值。如果没有人设置这个值应该是什么? null? undefined? get 只会运行一次。从set 返回的结果被缓存并使用。

    我为此案例创建了一个twiddle

    这个sample 来自数据网格插件。为了避免双向绑定,我们在这个数据网格中编写了这样一个计算属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      相关资源
      最近更新 更多