如何将应用程序控制器中声明的值传递给组件

时间:2015-11-21 15:07:20

标签: javascript ember.js

在我的应用程序控制器中,我有以下内容:

export default Ember.Controller.extend({
  isOpen: true,

  actions: {
    toggleSidebar () {
      this.toggleProperty('isOpen');
    }
  }
});

我想将isOpen传递给从其他模板(而不是application.hbs)调用的组件,例如:

{{#main-main isOpen=isOpen}}
{{/main-main}}

因为我在组件内部有:

export default Ember.Component.extend({
    tagName: 'main',
    classNames: ['main'],
    classNameBindings: ['isOpen:main--active'],
});

我当时认为应该像这样工作..但它没有。

如何将属性传递给组件main-main?

谢谢你们!

1 个答案:

答案 0 :(得分:0)

在要将isOpen属性传递给组件的每个模板(templates / example.hbs)中,您必须在与该模板关联的控制器中声明isOpen属性(controllers / example.js)。

您可以通过在controllers / example.js中使用依赖注入来实现此目的:

application: Ember.inject.controller(),
isOpen: Ember.computed.alias('application.isOpen')