Ember.js观察计算属性,不工作。指南示例

时间:2013-10-13 13:00:53

标签: ember.js

我正在学习Ember.js并浏览一些指南。我正在阅读有关观察员的信息: http://emberjs.com/guides/object-model/observers/

我想玩这个例子,所以我将其复制并粘贴到我的js文件中。在向观察者回调添加警告语句后,我惊讶地发现它没有被调用。

http://jsbin.com/UWEseSo/2/edit?js,output

我能够找到,如果你添加:

person.get('fullName');

在调用firstName之前,将调用观察者回调。如果在再次不再调用回调之后立即再次设置第一个名称。

有谁能解释这里发生了什么?

谢谢。

EDIT -------

我已经对代码进行了更多跟踪,现在我已经了解了为什么这种行为可能是这样的。虽然这个例子似乎有一个bug,但它可能只是一个优化。我之前观察到,如果我打电话给“获取”,观察者就会工作。如果我没有打电话给“获取”,观察者将无法工作。我相信Ember.js可能只是对此很聪明,如果没有调用“get”,故意不打扰调用观察者。他们可能这样做是因为如果没有“get”,就没有理由调用观察者,因为应用程序不可能显示过时的信息。

一旦调用了“get”,就会设置一个内部标志,以确保在下一个“set”上调用观察者。

1 个答案:

答案 0 :(得分:15)

看起来你自己完全了解了这种行为的解释,并且为了确认你的假设,主要是因为性能原因而在rc8中引入了一个变化。

您可以阅读here关于该文章的完整文章,未经审核的计算属性不要触发观察者

这基本上意味着如果您需要观察计算属性但当前没有检索它,只需在get方法中init

希望它有所帮助。