Backbone.js - 使用浏览器后退按钮路由器无法启动

时间:2013-05-18 07:18:54

标签: backbone.js backbone-routing

在我的应用中..

当我加载页面或刷新页面时,我的路由器没有正确响应并调用默认的视图方法。如果我使用其他链接来访问其他哈希网址...也可以使后退按钮正常工作。

即使在我加载页面时,我的启动功能也能正常工作。但是当我加载页面并使用浏览器的后退按钮时,默认方法不会触发。

是什么导致这个......这是我的代码:

    define([
    "backbone",
    "../model/model",
    "../collection/collection",
    "../views/appView",
    "../views/listView",
    "../views/appViews"], 
    function(Backbone,appModel,collection,appView,listView,appViews){

    var appRouter = Backbone.Router.extend({
        routes:{
            "":"defaultView",
            "list":"listAItem",
            "add":"listViewIt"
        },
        initialize:function(){
            console.log("initiated....."); //works properly
        },
        defaultView:function(){
            new appViews(); // not working..
        },
        listAItem:function(){
            console.log("from listAItem"); 
                    // on click and using back button woks fine
        },
        listViewIt:function(){
            new listView();
                   // on click and using back button woks fine
        }
    });

    Backbone.history.start(); // removed and updated to where i call my app...

    return appRouter;
})

现在我更新了我的Backbone.history以在启动我的应用程序后调用..现在我的初始方法(称为defual视图)但仍然在我的浏览器中使用我的后退/字体按钮不工作..但重置工作正常。

如何修复它..

这是我更新的代码:

 $.when.apply(null,requests).done(function(){
        var app = new router(); 
       //on refresh works, but not working while use back / front button of browser use.
        Backbone.history.start();
    });

1 个答案:

答案 0 :(得分:0)

它有效......

我错误地将其他视图设置为删除了初始元素。现在我意识到了。现在工作正常。谢谢所有人..

更新代码:

this.$el.find("ul").html("<h1>New html has to come here</h1>");

错误的是:

this.$el.html("<h1>New html has to come here</h1>");