这是一个常见的场景
一个LoginController,它执行登录并包含一个名为'isLoggedIn'的计算布尔属性,
ApplicationController,它对LoginController的'isLoggedIn'属性执行绑定,因此视图可以从任何地方轻松访问该属性。
为了使其工作,绑定必须在特定的控制器实例上进行:
请注意我已经创建了一个LoginController实例:
App.LoginController = Ember.Controller.create({
...
虽然大多数示例只扩展控制器并让应用程序创建实例, 但是,如果我将代码更改为
App.LoginController = Ember.Controller.extends({
...
然后绑定不起作用,
那么在控制器之间执行此类绑定的最佳做法是什么?
感谢。
答案 0 :(得分:0)
Ember使用一个实例化控制器,路由等的IOC容器。您永远不会直接实例化控制器,Ember会使用其IOC容器为您执行此操作。 extends
是正确的。
绑定不起作用,因为您绑定到类属性并在模板中使用实例属性。
要在控制器之间进行绑定,请使用needs
API。
needs: 'login',
loginBinding: 'controllers.login'
这为您提供了this.get('login')
的登录控制器的参考。
这是您更新的jsbin。