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

cor*_*sen 6 ember.js

我正在学习Ember.js并浏览一些指南.我在这里阅读观察者:http: //emberjs.com/guides/object-model/observers/

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

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

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

person.get('fullName');
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

编辑 - - - -

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

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

int*_*xel 15

看起来你自己都得到了对这种行为的正确解释,并且为了确认你的假设,确实存在rc8中出于性能原因而引入的变化.

你可以在这里阅读完整的文章,根据未经审计的计算属性,不要触发观察者

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

希望能帮助到你.

  • 在"init"的情况下,最好设置.observers(..).on("init")而不是"get in init method". (7认同)