从控制器的操作调用组件的操作

时间:2015-04-27 10:54:55

标签: ember.js

Controller Name : mailPDF

actions: {
// from the action sendmailPDF of the mailPDF controller I want to call the action name as "send" of the "Sendmail" Component.

    sendEmailPDF: function () {
    // want to call a component's action ex. SENDMAIL component and its send action()
    }
}

1 个答案:

答案 0 :(得分:1)

Ember有一个非常严格的数据下降,操作方法,你的控制器没有儿童组件的直接链接/知识。

您可以在组件中添加观察者,观察附加的某些属性,并且随着该属性的更改,您可以在组件中触发操作。或者你的组件可以发送一个动作,用它的父控制器注册自己,给控制器一个自己的引用,以便你打电话。

在这里自由交付:

组件

setup: function(){
   this.sendAction('registerWithParent', this);
}.on('didInsertElement')

控制器

actions: {
  registerPDFComp: function(comp){
     this.set('pdfComp', comp);
  } 
} 

模板

{{pdf-comp registerWithParent=registerPDFComp}}

在该示例中,您可以使用pdfComp属性访问该组件,并调用它的操作。它打破了一大堆原则,单一的责任,yadda yadda yadda。但也许你有充分的理由。