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

Muh*_*eek 4 ember.js ember-data ember-controllers ember-cli ember-components

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

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

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

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

  import Ember from 'ember';
    export default Ember.Controller.extend({
      search: ''
    )}
Run Code Online (Sandbox Code Playgroud)

application.hbs

{{input value = search}}

kri*_*ris 15

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

它的工作原理如下:

applicationController: Ember.inject.controller('application'),
mySearch: Ember.computed.alias('applicationController.search')
Run Code Online (Sandbox Code Playgroud)

在你的hbs模板中 -

{{mySearch}}
Run Code Online (Sandbox Code Playgroud)

 与应用程序属性"搜索"同步.


Muh*_*eek 6

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

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

管理Ember控制器之间的依赖关系

  • 现在是`import { inject } from '@ember/controller'; /*...*/ applicationController: 注入('应用程序')` (2认同)