我正在使用Browserify(有点像AMD)
在视图事件处理程序中,验证密码后,我想发送一条消息' login_success'路由器改变路线。
在路线' login_success'处理程序,我想调用route.navigate(' / newRoute'),这是从Backbone扩展的功能。
但我还没弄清楚如何从视图向路由器发送消息。任何人都可以共享示例代码或链接吗?
在Backbone中有改变路线的最佳做法吗?
谢谢!
答案 0 :(得分:1)
就个人而言,我喜欢触发路由器正在侦听的事件,然后采取行动。
所以在你看来你可以说
onPasswordVerified: function() {
this.trigger "password:verified"
}
然后在控制器中你可以听到那个事件(请注意,有时这是以childview为前缀,具体取决于你是否正在收听集合/复合视图,但我怀疑你是否有登录页面):
this.listenTo(loginView, "password:verified", function(args) {
App.vent.trigger "password:verified"
});
最后在你的路由器中你会听到那个事件(我通常会在我的App对象中构建一个navigate
函数,它在后台执行Backbone.history.navigate
:
App.vent.on "password:verified", function() {
App.navigate("/users");
API.userProfile();
}
关于这一点的好处是,如果您的应用程序的其他部分应该听取此事件,那么他们可以相应地采取行动。此外,通过这种方式路由,您可以更新到网页的网址/路由,就像您在没有关联的“刷新页面”服务器调用的情况下完成Backbone.history.navigate({trigger: true})
一样。
答案 1 :(得分:0)
最直接的方法就是使用Backbone.history.navigate() 。
如果你想拥有一些地方导航权限,你可以做一些事情
App.execute("navigate:to", "/url")
并按您认为合适的方式实施:
App.commands.setHandler("navigate:to", function(url){
...
Backbone.history.navigate(url)
})