如何在基于页面URL的路由之间导航?

时间:2015-11-22 05:22:11

标签: backbone.js router backbone-views

我正在开发一个包含多条路由的Backbone Application。我想修改我的changePage函数并使其将哈希作为参数,当它被调用时,它会根据该URL更改页面。

这是我的路由器

-Infinity

这是第一个观点:

define([" jquery"," backbone"," text!../../ pages / login.html"],function($, Backbone,loginTpl){

define(["jquery","backbone",'views/header'],  function( $, Backbone, Header) {
var ApplicationRouter = Backbone.Router.extend({
    _header: null,
    routes: {
         "": "login",
         "home": "home",
        },
    initialize: function() { 
        this.firstPage = true;
        this.fromBack = false;
        i18n.currentLocal = localStorage.getItem("currentLocal") || 'en';
        Backbone.history.start();         
    },
    login: function() {
        var self = this;        
        require(['views/loginPageView'], function(loginView){
             self.changePage(new loginView(),true);
        });         
    },
    home: function() {
        var self = this;        
        require(['views/homePageView'], function(homeView){
             self.changePage(new homeView(),false);
        });         
    },
    changePage: function (page,noPanel) {
        var deferred = $.Deferred();
        $page = $(page.el);
        $page.attr('data-role', 'page');
        console.log(this.firstPage);
        if(this.firstPage){
            $('#pageContent').append($page);
             page.render();
             if(!noPanel){
                 self._header = new Header({parent: $("#header")});
             }
        }
        else{
            $('#pageContent').html($page);
            $("#header").empty();
            page.render();
        }
        if (this.firstPage) {
            this.firstPage = false;
        }
        deferred.resolve();
        return deferred;
    },

    });

return ApplicationRouter;
})

});

因此,我想使用router.changePage(' home.html'),而不是使用router.navigate,这会导致路由器中的错误导致一些问题。 并根据我加载到各个View的URL。 谢谢

0 个答案:

没有答案