1

这是一个常见的场景

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

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

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

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

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

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

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

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

然后绑定不起作用,

那么在控制器之间执行这种绑定的最佳实践是什么?

谢谢。

4

1 回答 1

0

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

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

要在控制器之间绑定,请使用needsAPI。

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

这为您提供了对登录控制器的引用this.get('login')

这是您更新的jsbin

于 2013-07-27T14:02:51.517 回答