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 回答