绑定:在属性控制器之间进行绑定的最佳实践



以下是的常见场景

执行登录并包含名为"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。

最新更新