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

时间:2013-07-27 13:14:33

标签: ember.js

这是一个常见的场景

一个LoginController,它执行登录并包含一个名为'isLoggedIn'的计算布尔属性,

ApplicationController,它对LoginController的'isLoggedIn'属性执行绑定,因此视图可以从任何地方轻松访问该属性。

为了使其工作,绑定必须在特定的控制器实例上进行:

http://jsbin.com/asivap/1/

请注意我已经创建了一个LoginController实例:

App.LoginController = Ember.Controller.create({
   ...

虽然大多数示例只扩展控制器并让应用程序创建实例, 但是,如果我将代码更改为

App.LoginController = Ember.Controller.extends({
   ...

然后绑定不起作用,

那么在控制器之间执行此类绑定的最佳做法是什么?

感谢。

1 个答案:

答案 0 :(得分:0)

Ember使用一个实例化控制器,路由等的IOC容器。您永远不会直接实例化控制器,Ember会使用其IOC容器为您执行此操作。 extends是正确的。

绑定不起作用,因为您绑定到类属性并在模板中使用实例属性。

要在控制器之间进行绑定,请使用needs API。

needs: 'login',
loginBinding: 'controllers.login'

这为您提供了this.get('login')的登录控制器的参考。

这是您更新的jsbin