【问题标题】:Backbone.js '#' route not workingBackbone.js '#' 路由不起作用
【发布时间】:2012-07-09 15:44:54
【问题描述】:

在我的路由器中,我指定了路由器“#”来调用索引函数。这在应用程序加载时第一次起作用。但是在导航离开然后返回后,视图不再呈现。这是我的路由器:

CommunityApp.Routers.Main = Backbone.Router.extend({
    routes: {
        '': 'index',
        '#': 'index',
    },

    initialize: function () {
        this.communities = new CommunityApp.Collections.Communities();
        this.communities.fetch();
    },

    index: function() {
        console.log('index called');
        view = new CommunityApp.Views.CommunitiesIndex({collection: this.communities});
        $('#main').html(view.render().el);
    }
});

我看到该函数被调用是因为它记录了“索引调用”。但是,该视图仅在我第一次导航到 localhost:3000/# 时才呈现。如果我单击返回“#”的其他位置,该函数会被调用,但 CommunitiesIndex 视图永远不会插入到 DOM 中。

谢谢

【问题讨论】:

  • 不知道它是否能解决你的问题,但你不在你的路线中使用'#';每个路由都是在“#”之后发生的,因此“#”路由映射到 http://domain.com/## 的 URL。
  • 所以默认情况下,它应该只是''吗?
  • 是的,你的默认路由应该是''

标签: javascript backbone.js


【解决方案1】:

我知道这是一个旧线程,但我会加我的 2 美分。

对应的路由是''

routes: { '' : 'index' }

路线是空白的。第二部分可以是任何你想要的,即'index''home''landing'

【讨论】:

    【解决方案2】:

    为什么要使用#来映射索引页面,这不是一个好方法。 我建议您使用其他字符来映射索引页面,例如“索引”。 如果一定要用#,你的url应该是http://xxx.com/##,所以看起来很奇怪,比http://xxx.com/好很多#index 索引清晰度。

    编辑:

     routes: {
            '': 'index'
        },
    

    这样做,这意味着如果没有匹配映射,它会自动匹配['':'index']。那你奇怪为什么只跳转到第一个索引?我想第一次没有匹配任意映射,所以符合['':'index']的就自动跳转到索引页面,以后总会有匹配的映射,不符合['':'index']当然是不会跳转到的索引页。

    【讨论】:

    • 好的,但这仍然不能回答我的问题。当用户第一次打开页面时,xxx.com 对应的路由是什么?只是 ''?那应该显示什么?我希望它显示索引。
    猜你喜欢
    • 2017-10-31
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    相关资源
    最近更新 更多