Ember - 组件 属性 未在模板 hbs 中更新

Ember - Component property is not getting updated in template hbs

我的 component.js 中有一个组件 属性,基于此我将 show/hide 一些数据 template.hbs

案例一: 默认情况下,componentProperty (canShow) 为 true,但根据数据的某些更改,它将在另一个 computed property.

中设置为 false
        dataChanged: computed( 'data', 'canShow', function () {
             let someCalc = doSomeCalc;
             if(someCalc !== 0) { 
                this.set('canShow', false);
             }
            return someCalc;
        });

预期:Canshow应该是假的,所以模板中的数据应该被隐藏 结果:它被更新为 false,但在模板中数据仍在显示

案例2: 我已经在计算中使用 getter 和 setter 进行了尝试。

    canShowTemplateData: computed('canShow', {
       get() {
          return this.get('canShow');
        },
        set(key, value) {
          return value;
        }
    });

即使在这种情况下,set 也能正常工作。但是使用 get() 函数在模板中根本没有更新该值。还请说明在使用 set() 时,应该更新哪个值 canShowcanShowTemplateData

我错过了什么吗?或者还有其他方法可以解决这个问题吗?

首先,计算属性不应该有副作用。所以永远不要在计算的 属性 中调用 this.set,或者做类似 this.foo = ....

的事情

您的第一个计算 属性 也有问题:它从不返回任何东西。

你的第二个例子 setter 没有意义。你的 setter 什么都没做。

你想要的大概是这样的:

    canShow: computed( 'data', function () {
        if(it is true) { 
            return false;
        } else {
            return true;
        }
    });