Pass controller action to a component in EmberJS returns undefined
我在EmberJS中有一个带有操作的控制器,在路由模板内部,我正在调用一个组件,并将该控制器的操作作为参数传递给该组件。就像EmberJS 2.20中的文档所说的那样,通过操作触发更改
当我尝试在组件内部调用
控制器js代码:
1 2 3 4 5 6 7 8 9 10 11 12 | export default Ember.Controller.extend({ firstName:'', lastName:'', actions: { addAlumn (){ this.store.createRecord('alumn',{ firstName : this.get('firstName'), lastName : this.get('lastName') }); } } }); |
路由hbs模板:
1 | {{#validated-form submit=(action 'addAlumn') saveBtn=true }} ... {{/validated-form}} |
验证形式的hbs模板
1 2 3 4 | {{yield}} {{#if saveBtn}} Add <span class="icon-check"></span> {{/if}} |
验证形式的js代码
1 2 3 4 5 6 7 8 9 | export default Ember.Component.extend({ actions : { validateAndSubmit(){ console.log('validate'); console.log(this); console.log(this.get('submit')()); } } }); |
正如我所说,在控制台上的结果是:
1 2 3 | > validate > Class {__ember1449505261281:"ember496", __ember_meta__: Meta, parentView: Class, HAS_BLOCK [id=__ember1449505261281400801945202]: true, _targetObject: Classa€|} > undefined |
关于为什么不触发事件的任何线索?也许是因为该指导示例仅与组件一起使用,而我正在使用控制器?
只需使用
1 2 3 4 | validateAndSubmit() { console.log('validate'); this.sendAction('submit'); } |
正在运行的演示。