0

私のバックボーン アプリでは、 を使用しrequirejsて js ファイルをロードします。同様に、別のビューが必要です。ドロップダウン メニューにリンクがありません。ドロップダウンメニューに従って、#url例を追加します:

http://localhost:85/bino/html/interface-I.html#projectName/project11

ナビゲート メソッドは正常に動作し、URL を更新します。また、この URL をコピーして他のブラウザに貼り付けたり、現在のハッシュ状態で更新したりするたびに、routerメソッドが正常に動作します。

しかし、ドロップダウンメニューのリンクをクリックしても機能せず、メソッドが呼び出されません...理由は何で、どうすれば修正できますか..?

私のコード: メイン js ファイル (コードの一部)

var extender = _.extend({},backBone.Events);
            var params ={
                boardHolder :$('.boardHolder'),
                column      :3,
                space       :30,
                extender    :extender
            };
            var listApp = new routerer(params);
            backBone.history.start();
            extender.bind("list:selected",function(post){
                listApp.navigate(post.category+'/'+post.filter);
            });

私のルーターコード:

define(["backBone","singleton","listCollection","listView","listViews"],function(Backbone,singleton,listCollection,listView,listViews){
    singleton.router = Backbone.Router.extend({
        routes:{
            ""                          :"appView",
            "post"                      :"postView",
            "projectName/:id"           :"projectNameView",
            "assignedTo/:id"            :"assignedToView",
            "sortBy/:id"                :"sortByView"
        },
        initialize:function(params){
            this.params = params;
            this.collection = new listCollection;
            console.log('i am called');
        },
        hashView:function(){
            console.log('from hash view');
        },
        appView:function(){
            var that = this;
//          var defaultApp = new listCollection();
            this.collection.fetch({
                success:function(data){
                    new listViews({model:data,params:that.params})
                }
            })
        },
        projectNameView:function(thisView){ // not calling not sync
            console.log('called',thisView); // on click not works
        },
        assignedToView:function(thisView){ // not calling not sync
            console.log(thisView); // on click not works
        },
        sortByView:function(thisView){ // not calling not sync
            console.log(thisView); // on click not works
        }
    });
    return singleton.router;
})

前もって感謝します。

4

1 に答える 1

1

ナビゲートはURLを更新するだけです。また、トリガーオプションをtrueに設定してルート関数を呼び出す必要があります。ブラウザの履歴にエントリを作成せずにURLを更新する場合は、置換オプションもtrueに設定します。

listApp.navigate(post.category+'/'+post.filter);

になります

listApp.navigate(post.category+'/'+post.filter, {trigger: true});
于 2013-02-20T11:40:43.797 に答える