0
我在EmberJS中有一個控制器,其中包含一個動作,在我調用組件的路由模板中,並將控制器的動作作爲參數傳遞給組件。就像文檔中說的EmberJS 2.20 Triggering changes with actions
當我試圖調用組件內部的"parent"
動作時,返回值是未定義的,但是如果我拋出控制檯"this"
元素並檢查它的attr,函數就在那裏。
控制器js代碼:將控制器動作傳遞給EmberJS中的組件將返回undefined
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}}
驗證-FO RM 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
上這是爲什麼不觸發事件任何線索?也許是因爲指南的例子只是與組件工作,我正在使用控制器?
非常感謝!它可以無縫地工作,但是我不明白爲什麼我的代碼不能正常工作,如果這是指南所說的。你能簡單解釋一下嗎?再次感謝。 – Lowlo
你需要把你的動作放在正確的控制器中。我更新了我的演示 - https://ember-twiddle.com/273fa15701dec2504162 - 和'this.get('submit')'記錄正確。你自己看。這種方法很好。 –