如何在另一个控制器ember中绑定Application controller属性

时间:2016-05-20 07:19:42

标签: ember.js ember-data ember-cli ember-components ember-controllers

我在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}}

3 个答案:

答案 0 :(得分:15)

Ember需求已弃用,现在使用方式不同。

它的工作原理如下:

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

在你的hbs模板中 -

{{mySearch}}

与应用程序属性“搜索”同步。

答案 1 :(得分:6)

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

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

答案 2 :(得分:1)

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

{{controllers.neededController.property}}

在你的情况下试试:

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

请参阅此处的示例:http://jsfiddle.net/6Evrq/