我在EmberJS中有一个带有动作的控制器,在路径模板中我作为参数对组件进行动作 . 就像EmberJS 2.20 Triggering changes with actions中的文档说的那样
当我试图在组件内调用 "parent"
操作时,返回是未定义的,但是如果我抛出控制台, "this"
元素并检查其attr,则函数就在那里 .
Controller js code:
export default Ember.Controller.extend({
firstName:'',
lastName:'',
actions: {
addAlumn (){
this.store.createRecord('alumn',{
firstName : this.get('firstName'),
lastName : this.get('lastName')
});
}
}
});
Route hbs template:
{{#validated-form submit=(action 'addAlumn') saveBtn=true }} ... {{/validated-form}}
Validated-form hbs template
{{yield}}
{{#if saveBtn}}
<a href="#" class="btn primary save"{{action "validateAndSubmit"}}>Add <span class="icon-check"></span></a>
{{/if}}
Validate-form js code
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
关于为什么这不会触发事件的任何线索?也许是因为指南示例只使用组件而我正在使用控制器?
1 回答
请使用
componentInstance.sendAction
请:Working demo.