Ember.js(v2.4.5)组件不是't错过第二个动作
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
帮助程序不会反弹该操作,而只是传递它。
相关文章:
- 下拉选择可自动更改第二个下拉选择
- 为什么不'在JQuery中找到第二个css选择器的工作
- 当单击第一个李时,它显示内容一,当单击第二个李时,它显示内容二
- CORS-重定向到第二个GET正在接收的页面
- 正则表达式与数字中的第二个点匹配
- 如何在react js中移动第二个组件
- 使用Javascript,如何显示<tr>在另一<tr>悬停时,隐藏第二个<tr>
- 关闭第二个事件源上的第一个事件源's onopen方法
- D3从嵌套的JSON中绘制第二个圆环图
- IE11中的第二个调用取消了第一个Fetch API调用
- 第一个字第一个字符第二个字第二个字符,一直到数组结束
- 角度指令:指向第二个元素
- 时间选择器:如何通过更改第一个值来更改第二个值
- 我如何从字符串中选出第一个单词的第一个字母,然后再选出第二个单词
- 与网络界面相比,谷歌搜索API有时会重复第一个结果,有时会重复第二个结果
- 第二个存在条件不起作用
- 从第一个日期选择器定义第二个日期选择器的开始日期
- 如果未选择第一个下拉列表,则禁用第二个下拉列表
- Ember.js(v2.4.5)组件不是't错过第二个动作
- 标签的rggraph问题Above未出现在第二个图形创建中