Ember在控制器和路线中定义动作

Srl*_*rle 20 ember.js

从官方指南:

如果控制器未实现与其操作对象中的操作同名的方法,则该操作将被发送到路由器,其中当前活动的叶路由将有机会处理该操作.

那么在控制器中定义动作方法和在路径中定义动作方法的优缺点是什么?我可以看到指南没有谈到这一点.在防止动作冒泡的意义上,在控制器中定义可以"更快".

小智 31

好问题,虽然可能不适合SO格式.

简单的答案是,在路由器中放置与路由相关的操作,在控制器中放置与控制器/模型相关的操作.

如果您发现自己正在调用this.controllerFor路由器操作,或者this.get('target')在控制器操作中,则很可能您错放了操作.

与过渡相关的行动通常是放入路线的好选择.修改或保存模型等操作可能属于控制器.

请记住,操作从叶子路径冒泡到父路径.因此,如果要定义适用于一组子路由的操作,则将其放在父路由中是有意义的.

  • 您好@torazaburo,自2014年6月以来有什么变化吗?您是否仍然建议在控制器上使用操作,或者我们是否应该将所有内容移至路径,因为我们有可路由组件? (4认同)