[英]Ember.js (v2.4.5) component isn't passing up second action
我有一个非常简单的组件,它有两个动作,即开始和停止。 单击按钮时将触发它们。 第一个动作冒泡到路线并按预期工作,但是第二个动作在组件中触发,但从未到达路线。
我刚刚开始玩Ember,但是我想组件可以执行多个动作?
控制台中没有错误,按钮只是不执行任何操作,并且从路由中不会显示控制台日志。
组件动作
actions: {
start() {
console.log('component start called');
this.sendAction('start', this.get('item'));
},
stop() {
console.log('component stop called');
this.sendAction('stop', this.get('item'));
}
}
路线动作
actions: {
start (server) {
console.log('route start called');
server.set("settings.amazonTask", 'start');
server.save();
},
stop (server) {
console.log('route stop called');
server.set('settings.amazonTask', 'stop');
server.save();
}
}
模板
<button type="button"
class="btn btn-default btn-sm" {{action "start"}}>
Turn on
</button>
<button type="button"
class="btn btn-default btn-sm" {{action "stop"}}>
Turn off
</button>
您必须将操作归结为组件:
{{my-component start=(action 'start') stop=(action 'stop')}}
然后,您可以使用sendAction
进行调用。
但是我强烈建议使用新语法并直接访问attrs
对象上的操作。 这更加清楚,可以清楚地了解发生了什么:
this.attrs['start'](this.get('item'))
实际上, action
助手只是从actions
对象中获取一个动作并将其绑定到当前上下文。 可以将结果传递给组件,然后在执行action
帮助器的上下文中从该组件调用该结果。
请注意,在已创建的动作上调用action
助手将不会反弹动作,而只是通过它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.