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'2 番目の部分は、 、'home'、 など、好きなように指定できます'landing'

于 2013-01-15T01:49:39.603 に答える
0

# を使用してインデックス ページをマップする必要があるのはなぜですか。これは良い方法ではありません。「index」など、他の文字を使用してインデックス ページをマップすることをお勧めします。# を使用する必要がある場合、URL はhttp://xxx.com/##にする必要があるため、非常に奇妙に見えます。インデックスの明快さはhttp://xxx.com/#indexよりもはるかに優れています。

編集:

 routes: {
        '': 'index'
    },

そうするために, これは, 一致するマッピングがない場合, 自動的に ['': 'index'] に一致することを意味します.なぜ最初のジャンプだけがインデックスにジャンプするのか疑問に思っていますか?どのマップとも一致しなかったのは初めてです. ['':'index'] に沿って自動的にインデックス ページにジャンプするため、将来は常に一致するマッピングがあり、['':'index'] に一致しない場合は、もちろん、インデックス ページにジャンプしません。 .

于 2012-07-09T16:23:58.260 に答える