簡體   English   中英

將控制器操作傳遞給EmberJS中的組件將返回未定義

[英]Pass controller action to a component in EmberJS returns undefined

我在EmberJS中有一個帶有動作的控制器,在路由模板內部,我正在調用一個組件,並將該控制器的動作作為參數傳遞給組件。 就像EmberJS 2.20中的文檔所說的那樣, 通過操作觸發更改
當我嘗試在組件內部調用"parent"操作時,返回值是不確定的,但是如果我在控制台上拋出"this"元素並檢查其attr,則該函數就在那里。
控制器js代碼:

export default Ember.Controller.extend({
  firstName:'',
  lastName:'',
  actions: {
    addAlumn (){
      this.store.createRecord('alumn',{
        firstName : this.get('firstName'),
        lastName : this.get('lastName')
      });
    }
  }
});

路由HBS模板:

{{#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}}

驗證表單js代碼

export default Ember.Component.extend({
  actions : {
    validateAndSubmit(){
      console.log('validate');
      console.log(this);
      console.log(this.get('submit')());
    }
  }
});

就像我說的,控制台上的結果是:

> 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');
}

工作演示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM