1

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

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 中。

谢谢

4

2 回答 2

1

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

对应的路线是''

routes: { '' : 'index' }

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

于 2013-01-15T01:49:39.603 回答
0

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

编辑:

 routes: {
        '': 'index'
    },

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

于 2012-07-09T16:23:58.260 回答