以下是的常见场景
执行登录并包含名为"isLoggedIn"的计算布尔属性的登录控制器,
执行与LoginController"isLoggedIn"属性绑定的ApplicationController,因此视图可以从任何位置轻松访问该属性。
为了使其工作,绑定必须发生在特定的控制器实例上:
http://jsbin.com/asivap/1/
请注意,我已经创建了一个LoginController实例:
App.LoginController = Ember.Controller.create({
...
虽然大多数示例仅扩展控制器并让应用程序创建实例,但是如果我把代码改成
App.LoginController = Ember.Controller.extends({
...
然后绑定不起作用,
那么,在控制器之间执行这种绑定的最佳实践是什么呢?
谢谢。
Ember使用IOC容器来实例化控制器、路由等。您从不直接实例化控制器,Ember使用其IOC容器为您实现这一点。extends
正确。
绑定不起作用,因为您正在绑定到类属性并在模板中使用实例属性。
要在控制器之间绑定,请使用needs
API。
needs: 'login',
loginBinding: 'controllers.login'
这为您提供了一个使用this.get('login')
的登录控制器的参考。
这是您更新的jsbin。