gpt4 book ai didi

ember.js - 即使我没有指定其依赖项,为什么计算属性也会更新?

转载 作者:行者123 更新时间:2023-12-02 21:58:52 25 4
gpt4 key购买 nike

我有一个类似这样的架构:

App = {};

App.Outer = Ember.Object.extend({
inner: null,
quantity: 0,

count: function () {
var self = this, inner = self.get('inner');
return self.get('quantity') * inner.get('count');
}.property('nothing')
});

App.Inner = Ember.Object.extend({
count: 0
});

是的,“count”计算属性确实被设置为依赖于一个完全不存在的属性“nothing”。但无论如何它似乎都会更新:

var o1 = App.Outer.create({
quantity: 2,
inner: App.Inner.create({count: 4})
});

console.log(o1.get('count')); // => 8
o1.get('inner').set('count', 5);
console.log(o1.get('count')); // => 10
o1.set('inner', App.Inner.create({count: 10}));
console.log(o1.get('count')); // => 20

我错过了什么吗?它知道要更新什么,而无需我告诉它依赖什么......这不可能是正确的,不是吗?我对 Ember 计算属性有什么误解?

谢谢

最佳答案

通过使用 this.get('quantity')inner.get('count') 你可以告诉它它依赖什么。每次调用 .get('count') 时,该函数都会关闭并获取这些属性的当前值,从而返回最新结果。

当您将计算属性计数绑定(bind)到其他内容时,.property() 部分就会发挥作用,例如一个看法。当您这样做时,对数量进行更改将自动重新计算计数,并且这个新值将传播到您绑定(bind)计数的任何值。

您可以在此处查看操作的差异:http://jsfiddle.net/tomwhatmore/6gz8x/

关于ember.js - 即使我没有指定其依赖项,为什么计算属性也会更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9203091/

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