Backbone app.navigate控件更改为url

时间:2015-04-24 10:05:42

标签: backbone.js routes custom-routes

我有一个骨干应用程序,例如http://foo.com。我的应用程序对于不同的区域表现不同,所以如果我导航到http://foo.com/TX加载了不同的信息集,而如果我导航到http://foo.com/OK则加载另一组信息。这些必然不构成主干路径的一部分,并且是网址本身的一部分。

我还修改了我的骨干路由,忽略了url中的第二个参数,同时考虑了路由器初始化函数中的路由,

routes = [
    [/\w+/,             'default',      this.default],
    [/\w+\/login/,      'login',        this.login]
];
_.each(routes, function(route) {
    router.route.apply(router,route);
});

但当我app.navigate("login", true)时,它会将我的网址更改为http://foo.com/home。我期望看到的是http://foo.com/TX/home,以便它保留区域信息。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

假设您的应用位于指定位置,您的路由器将返回该位置,而无需添加额外的区域代码。一种选择是扩展您的路由器模型并覆盖主干网的导航功能(documentation)以合并区域代码,但这可能是危险的,超出了您想要采取的范围对你自己。

另一种选择是在路由器上调用路径而不更新URL(documentation)。这将运行您的代码并更新页面,但不会根据需要重置URL。使用此选项,您可能希望使用选项

调用路由器
router.route.apply("login", {trigger: true, replace: false})