我在ember js中遇到一个奇怪的问题,即从一个路由/控制器向另一个路由发送动作。该动作永远不会击中其他路线的动作处理程序。我可以从控制器向控制器发送动作,从同一个控制器发送到同一路径,但不是从一个控制器/路由到另一个路由处理器的附加跳。
最终我想要实现的是从一个路由users.new向另一个路由users.login发送一个动作。该操作不在users.login的控制器中处理,所以我假设它会冒泡到users.login路由操作处理程序。
非常感谢任何帮助!
答案 0 :(得分:1)
从对等路由发送操作不起作用。解决方案是创建会话服务。
答案 1 :(得分:1)
动作向控制器发泡,然后向其路线发送,然后是该路线的祖先。它们不用于路径之间/之间的通信。
问题是,该动作要做什么?这听起来有点像你真的想要过渡到路线,而不是向它或它的控制器发送动作。如果要将参数与转换一起传递,可以使用查询参数来执行此操作。
如果您可以提供更多详细信息或现有代码,我们可能会为您提供一些特定的代码片段。
如果由于某种原因您确实想要在路由和控制器之间进行通信,则可以使用Ember事件。您使用this.trigger('event')
发送并使用object.on('event', handler)
收听它们。但是,我怀疑你是否需要解决你想要解决的问题。
我不知道会话服务应该如何解决这个问题。通常,会话服务是以非常控制器/路由等方式跟踪会话(用户)信息的方式。