我已将一个字符串值存储在计算属性中,如下所示:
clientId: Ember.computed.oneWay("_clientId")
其中_clientId被定义为对象上的属性,如下所示:
export default Ember.service.extend { _clientId: null, clientId: Ember.computed.oneWay("_clientId"), updateId() {this.set("_clientId", "fe48822d-bf50-44a1-9ce0-61b06504d726"); } }
然后我有一个具有计算属性的组件,如:
chartData: Ember.computed("data", function () {
const data = this.get("data");
const clientId = this.get("session").get("clientId");
console.log(clientId);
if (data && data.get("left") !== undefined && data.get("right") !== undefined) {
return data;
}
this.set("_chartDisplayData", null);
return null;
})
当我调用updateId时,我希望在更改clientId的值时重新运行chartData函数(我验证了clientId的值已更改)。但是,chartData函数永远不会重新运行,为什么会这样?
答案 0 :(得分:1)
你需要告诉computed property about all of your dependencies。首先,如果计算属性不在某处使用,它将永远不会运行。如果您还没有使用它,则需要observer。但假设您实际使用它,计算属性将仅在列出的依赖项之一发生更改时重新计算。如果将对象列为依赖项,则只有在更换整个对象时,才会更新某些对象的属性。试试这个:
pip freeze > requirements.txt