如何在控制器父母和孩子Ember之间传递一个动作?

时间:2017-02-16 10:47:32

标签: ember.js

所以我希望能够按下父母上的一个按钮,该动作将动作传递给子控制器,这会切换一个值吗?

这可能吗?我只读过将动作传递给不在控制器之间的组件?

1 个答案:

答案 0 :(得分:6)

在父控制器中有属性说isOpentoggleIsOpen。在子控制器中,您可以注入父控制器并使用isOpen属性并使用send('toggleIsOpen')来调用父控制器方法。

演示

Twiddle Link

controllers / parent.js

import Ember from 'ember';
export default Ember.Controller.extend({
  isOpen:true,
  actions:{
    toggleIsOpen(){
      console.log('toggleIsOpen in parent');
      this.toggleProperty('isOpen');
    }
  }
});

controllers / parent / child.js

import Ember from 'ember';
export default Ember.Controller.extend({
  parent: Ember.inject.controller('parent'), 
  actions:{
    toggleIsOpen(){      
      this.get('parent').send('toggleIsOpen');      
    }
  }
});

templates / parent / child.hbs

child {{parent.isOpen}} 
<button {{action 'toggleIsOpen' }}> Toggle </button>
{{outlet}}
相关问题