Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 余烬控制器是否可以绑定到其已更改的事件';她自己的财产?_Ember.js_Property Binding_Ember Observable - Fatal编程技术网

Ember.js 余烬控制器是否可以绑定到其已更改的事件';她自己的财产?

Ember.js 余烬控制器是否可以绑定到其已更改的事件';她自己的财产?,ember.js,property-binding,ember-observable,Ember.js,Property Binding,Ember Observable,给定一个控制器,如: App.SignInController = Ember.Controller.extend authenticated: false authenticatedDidChange: (() => console.log @get('authenticated') ).observes('controller.authenticated') 这似乎不起作用,所以我一定不明白观察员是如何工作的。我认为它应该在controller.authentic

给定一个控制器,如:

App.SignInController = Ember.Controller.extend
  authenticated: false
  authenticatedDidChange: (() =>
    console.log @get('authenticated')
  ).observes('controller.authenticated')
这似乎不起作用,所以我一定不明白观察员是如何工作的。我认为它应该在controller.authenticated上创建一个观察者。但是,当我调用
@set(“authenticated”,true)
时,不会记录任何内容

更新: 我确实尝试用
App.signInController.authenticated
替换
controller.authenticated
,但没有效果


我错过了什么?

最终我在库拉偶然发现了这个耶胡达·卡茨

App.friendsController = Ember.ArrayProxy.extend({
  contentDidChange: function() {
    // stuff here
  }.observes('content')
});
查看此答案后,我注意到,
观察
调用只指定属性名称,没有
控制器
App.signInController
前缀。将上面的解决方案更改为只观察('authenticated')就行了

App.SignInController = Ember.Controller.extend
  authenticated: false
  authenticatedDidChange: (() ->
    console.log @get('authenticated')
  ).observes('authenticated')

与计算属性一样,观察者的“路径”必须是相对于当前对象的,或者是全局命名空间的绝对路径。更好的解决方案是使用@ryan建议的方法。但是,如果您确定对象App.signInController已实例化,则依赖于App.signInController.authenticated可以工作。