Javascript Backbone.js:第二次加载时主体将变得未定义(windows mobile)

Javascript Backbone.js:第二次加载时主体将变得未定义(windows mobile),javascript,jquery,cordova,backbone.js,windows-phone-8,Javascript,Jquery,Cordova,Backbone.js,Windows Phone 8,我正在使用backbone.js和phonegap为android、IOS和Windows创建一个混合应用程序。下面是HTML、router.js和loginView.js代码 <!DOCTYPE HTML> <html> <head> <link rel="stylesheet" href="css/jquery-ui-1.10.3.min.css"/> <script type="text/javascript" src=

我正在使用backbone.js和phonegap为android、IOS和Windows创建一个混合应用程序。下面是HTML、router.js和loginView.js代码

<!DOCTYPE HTML>
<html>
<head>
    <link rel="stylesheet" href="css/jquery-ui-1.10.3.min.css"/>
    <script type="text/javascript" src="js/libs/jquery/jquery-1.10.1.min.js" ></script>
    <script type="text/javascript" data-main="js/main" src="js/libs/require/require.js"> </script>
    <script charset="utf-8" src="cordova.js"><\/script>
</head>
<body>
    <div class="loading">
            <span>Loading Data</span>
        </div>
    </div>
</body>
</html>

router code:  


define(['jquery', 'underscore', 'backbone', 'jqueryui'], 
function($, _, Backbone, jqueryui) {
var myviews = [];
var mainRouter = Backbone.Router.extend({
    routes : {
        "home" : "homepage",
        "*path" : "defaultRoute"
    }
});
var initialize = function() {
    var routrObj = new mainRouter;
    routrObj.on('route:homepage', function(actions) {
        $(myviews).each(function(ind, val) {
            val.undelegateEvents();
            val.$el.removeData().unbind();
            val.$el.remove();
            myviews.pop(val);
        });
        require(['view/landing'], function(landing) {
            var landing_new = new landing();
            landing_new.render();
            myviews.push(landing_new);
        });
    });
    routrObj.on('route:defaultRoute', function(actions) {
        $(myviews).each(function(ind, val) {
            val.undelegateEvents();
            val.$el.removeData().unbind();
            val.$el.remove();
            myviews.pop(val);
        });
        require(['view/loginView'], function(loginview) {
            var login = new loginview();
            login.render();
            myviews.push(login);
        });
    });
    Backbone.history.start();
};
return {
    initialize : initialize
};
}); 



Login View code :  

 define(['jquery', 'backbone', 'underscore', 'common', 'text!template/login.html'], function($, Backbone, _, common, loginPage) {
var loginResp, hash, self, XDeviceType = "";

var login_view = Backbone.View.extend({
    id : 'loginpage',
    /*Initializing the login view */
    initialize : function() {
        sessionStorage.clear();
        hash = CryptoJS.MD5("Skandia").toString();
    },
    /**
     * To load the login page 
     *  @param {void}   
     */
    render : function() {
        self = this;
        var compiledTemplate = _.template(loginPage);
        this.$el.append(compiledTemplate);
        var bodyDiv = $('body');
        this.$el.appendTo(bodyDiv);
    }
});
return login_view;
});

加载数据
路由器代码:
定义(['jquery'、'下划线'、'主干'、'jqueryui'],
函数($,u2;,主干,jqueryui){
var myviews=[];
var mainRouter=Backbone.Router.extend({
路线:{
“主页”:“主页”,
*路径“:“defaultRoute”
}
});
var initialize=函数(){
var routrObj=新的主路由器;
routrObj.on('路线:主页',功能(操作){
$(myviews)。每个(函数(ind、val){
val.undelegateEvents();
val.$el.removeData().unbind();
val.$el.remove();
myviews.pop(val);
});
要求(['view/landing'],功能(landing){
var landing_new=新的landing();
landing_new.render();
myviews.push(新的着陆点);
});
});
routrObj.on('route:defaultRoute',函数(操作){
$(myviews)。每个(函数(ind、val){
val.undelegateEvents();
val.$el.removeData().unbind();
val.$el.remove();
myviews.pop(val);
});
require(['view/loginView'],函数(loginView){
var login=new loginview();
login.render();
推送(登录);
});
});
Backbone.history.start();
};
返回{
初始化:初始化
};
}); 
登录视图代码:
定义(['jquery',backbone',下划线',common',text!template/login.html',函数($,backbone,ux,common,loginPage){
var loginResp,哈希,self,XDeviceType=“”;
var login\u view=Backbone.view.extend({
id:“登录页面”,
/*初始化登录视图*/
初始化:函数(){
sessionStorage.clear();
hash=CryptoJS.MD5(“Skandia”).toString();
},
/**
*加载登录页面的步骤
*@param{void}
*/
render:function(){
self=这个;
var compiledTemplate=ux0.template(loginPage);
本.$el.append(compiledTemplate);
var bodyDiv=$('body');
这是$el.appendTo(bodyDiv);
}
});
返回登录视图;
});

当用户尝试注销时,会重新加载index.html(使用window.location.href='index.html')。在Windows Mobile(Windows 8)中,当重新加载页面时,正文将变得未定义。因此会显示空白屏幕。此问题仅在windows中出现,对于android/IOS/其他浏览器,页面显示得非常完美。Bckbone.js/jquery已完全加载。我想不出这个问题

非常感谢您的帮助或建议


提前谢谢

使用Backbone.history.navigate方法

联机单击

localStorage.clear();
sessionStorage.clear();
Backbone.history.navigate('/home', true);

在window.location.href中,所有文件都被重新下载

注销时是否传递任何参数?否,我正在使用window.location.href='index.html'重新加载页面