Emberjs组件动作
Emberjs components actions
我正在尝试使用Emberjs组件。我在行动上遇到了麻烦。
这里是我的组件:
export default Ember.Component.extend({
actions: {
openObject: function (id) {
this.sendAction('openObject', id);
}
},
...
这里是我的控制器,我也在路由中创建了相同的动作
export default Ember.Controller.extend(
{
actions: {
openObject: function (id) {
self.transitionToRoute('objects.bc', id);
}
}
}
);
我所需要的只是通过动作从组件进行转换。
只有当我以这种方式连接控制器动作和组件动作时,它才能工作:
{{bc-table openObject="openObject"}}
有没有办法发送动作从组件到路由器/控制器没有这样的连接?
你的component.js文件应该是这样的:
export default Ember.Component.extend({
pickedObject: 'openObjectHandler',
actions: {
openObject: function (data) {
this.sendAction('pickedObject', data);
}
},
...
当openObject动作被触发时,组件将向上冒泡泡动作作为'openObjectHandler',传递数据。所以你的控制器需要实现一个名为"openObjectHandler"的动作处理程序。
另一种表达方式是,当你在模板中使用它时,像这样将参数传递给web组件(将优先于component.js中的pickdobject):
{{my-example pickedObject='otherOpenObjectHandler}}
在当前路由层次结构中活动的控制器中像这样处理动作,比如你的应用控制器,例如:
actions: {
openObjectHandler: function(data) {
// do something here
console.log('openObjectHandler: '+data);
}
}
这是我正在做的一个JSBin,它使用这种技术将一个动作冒泡到控制器上:
JSBin演示
相关文章:
- 我的组件的Emberjs特定的SCSS文件
- 如何设置EmberJS组件的上下文
- 通过emberJS中的控制器修改组件的属性
- EmberJs-将所有来自子组件的操作路由到父组件,再路由到父控制器
- EmberJS:动态插入组件
- Emberjs-如何在组件方法中获取当前路由器路径
- EmberJS - 使用几个解决方案从外部调用组件方法(呼吁讨论)
- 如何在 emberjs 组件中重新分配模板
- 控制器中的 Emberjs-1.0 组件和计算属性
- Emberjs-1.0 将控制器实例传递给 ember 组件
- EmberJS 从子组件触发对父组件的操作
- 将控制器操作传递给EmberJS中的组件会返回未定义的结果
- 如何在EmberJS主页上的Gravatar组件示例中正确添加“debounce”
- 检查Emberjs中为组件分配了哪些属性
- 如何在 emberjs 2.1 中隐藏像 ng-hide 这样的组件
- 什么是控制器?EmberJS中的组件
- Emberjs的partial's动作在组件中不触发
- 如何用第三方组件和回调测试EmberJS ?
- EmberJs的输入onkeypress事件未发送到组件
- EmberJS在不同的上下文中使用组件