Javascript 将控制器操作传递给EmberJS中的组件返回未定义

Javascript 将控制器操作传递给EmberJS中的组件返回未定义,javascript,ember.js,Javascript,Ember.js,我在EmberJS中有一个控制器,在路由模板中调用一个组件,并将控制器的操作作为参数传递给该组件。正如 当我试图在组件内部调用“parent”操作时,返回未定义,但如果我在控制台上抛出“this”元素并检查其属性,则函数就在那里。 控制器js代码: export default Ember.Controller.extend({ firstName:'', lastName:'', actions: { addAlumn (){ this.store.create

我在EmberJS中有一个控制器,在路由模板中调用一个组件,并将控制器的操作作为参数传递给该组件。正如
当我试图在组件内部调用
“parent”
操作时,返回未定义,但如果我在控制台上抛出
“this”
元素并检查其属性,则函数就在那里。
控制器js代码:

export default Ember.Controller.extend({
  firstName:'',
  lastName:'',
  actions: {
    addAlumn (){
      this.store.createRecord('alumn',{
        firstName : this.get('firstName'),
        lastName : this.get('lastName')
      });
    }
  }
});
{{#validated-form submit=(action 'addAlumn') saveBtn=true }} ... {{/validated-form}}
路线hbs模板:

export default Ember.Controller.extend({
  firstName:'',
  lastName:'',
  actions: {
    addAlumn (){
      this.store.createRecord('alumn',{
        firstName : this.get('firstName'),
        lastName : this.get('lastName')
      });
    }
  }
});
{{#validated-form submit=(action 'addAlumn') saveBtn=true }} ... {{/validated-form}}
已验证的表格hbs模板

{{yield}}
{{#if saveBtn}}
<a href="#" class="btn primary save"{{action "validateAndSubmit"}}>Add <span class="icon-check"></span></a>
{{/if}}
export default Ember.Component.extend({
  actions : {
    validateAndSubmit(){
      console.log('validate');
      console.log(this);
      console.log(this.get('submit')());
    }
  }
});
正如我所说,console上的结果是:

> validate
> Class {__ember1449505261281: "ember496", __ember_meta__: Meta, parentView: Class, HAS_BLOCK [id=__ember1449505261281400801945202]: true, _targetObject: Class…}
> undefined

有没有线索说明为什么这不会引发这起事件?可能是因为指南示例只处理组件,而我使用的是控制器?

只需使用
componentInstance.sendAction
请:

validateAndSubmit() {
  console.log('validate');
  this.sendAction('submit');
}

非常感谢!它可以无缝地工作,但我不明白为什么我的代码不工作,如果它是指南所说的。你能简单解释一下吗?再次感谢。您需要将您的操作置于正确的控制器中。我更新了我的演示-
this.get('submit')
被正确记录。你自己看看吧。这种方法很有效。