如何在另一个控制器 ember 中绑定应用程序控制器 属性

how to bind Application controller property in another controller ember

我在 ApplicationController 中搜索 属性 并且它与搜索的输入字段相关联。 我想访问 ProjectController 中 ApplicationController 的搜索字段。它应该是同步的。 我使用以下代码但它不起作用。

/ app/controllers/projects/index.js(项目控制器)

import Ember from 'ember';
export default Ember.Controller.extend({
    needs: ['application'],
    searchBinding: 'controllers.application.search'
});

/ app/controllers/application.js(应用程序控制器)

  import Ember from 'ember';
    export default Ember.Controller.extend({
      search: ''
    )}

application.hbs

{{input value = search}}

您可以通过以下方式访问 needs 中包含的控制器属性:

{{controllers.neededController.property}}

在你的情况下试试:

{{input value=controllers.application.search}}

参见此处示例:http://jsfiddle.net/6Evrq/

Ember needs 已弃用,现在有不同的用法。

它是这样工作的:

applicationController: Ember.inject.controller('application'),
mySearch: Ember.computed.alias('applicationController.search')

在您的 hbs 模板中 -

{{mySearch}}

与应用程序同步 属性 "search"。

您可以通过注入访问控制器内的任何控制器。

import Ember from 'ember';
export default Ember.Controller.extend({
    applicationController: Ember.inject.controller('application'),
    searchProperty: Ember.computed.alias('applicationController.search'),
)};

Managing Dependences between Ember controllers