1

我遇到了一个奇怪的问题,我的计算属性没有执行。经过一些测试后,我意识到对象中的其他计算属性工作正常,唯一的区别是工作的属性是在模板中渲染/使用的。

我创建了一个 JSBin 来演示。http://jsbin.com/izoyok/16/

这两个属性具有相同的代码和行为。唯一的区别是在模板中使用了 items1ComputedProperty。请注意,计算属性正在按预期将消息记录到控制台中。

这是 ember 的要求或优化,仅在模板中重新渲染计算属性时才花时间评估计算属性?还是我犯了其他错误。

我可以理解他们是否是通过设计这样做的,因为可以认为不应以这种方式使用计算属性,并且您可以使用观察者为实例属性分配值,但另一方面,我想很多人会没有做出相同的假设,我没有看到任何解释该行为的文档。

http://emberjs.com/guides/object-model/computed-properties/

4

1 回答 1

3

这不是一个真正的模板。计算属性仅在尝试使用它们时才会执行。因此,当模板引用计算属性时,ember 会执行函数并缓存结果。然后在将来它使用缓存值,除非依赖属性之一已更改,在这种情况下缓存无效并且将再次执行该函数。

于 2013-08-15T22:50:50.853 回答