1

我在具有 BackBone.Model.extend 实现的应用程序中有一个 HomeRoute.js 文件。我在这个 HomeRoute.js 的渲染方法中调用了一个 ajax,它为我提供了会话 json。现在从这个 json 我想提取一个变量 sessionId 并且我想在另一个 HeaderView.js 文件中使用这个 sessionId 变量。

我对此进行了很多研究,但找不到任何方法将此变量传递给 HeaderView.js

HomeRoute.js 代码

var HomeRoute = BackBone.Model.extend({
render: function() { 

 this.createSession("userId","tenantId","orgId","accountNumb"); 
},

createSession : function(userId, tenantId, orgUnit, userAccountNum) {
var self = this;
var showHtml = function(data){
           if(data.status == "valid"){
           var sessionId = data.session.sessionId;// This variable to be used in another js file
           self.displayHtml(self, sessionId);   
           }else{
                //  To be implemented Later
           }
    }
    $.ajax({
         type : 'post',
         url : "url",
         success : showHtml,
         error : function(){
        alert("An Error Occurred while creating session");
         }
    });
},

任何线索都会对我很有帮助。

4

2 回答 2

0

有很多方法可以做到这一点。

我只是在 HomeRoute 之外(在同一个文件中)创建一个名为 sessionId 的变量(现在您在 HomeRoute 对象内的 showHtml 函数中只有该变量;在范围内将它移到更高的位置)。在这个最高范围内的任何变量都可以被这个之后包含的其他 .js 文件看到,包括您的 HeaderView.js 文件。

例如:

var sessionId;

var HomeRoute = BackBone.Model.extend({
render: function() { 

 this.createSession("userId","tenantId","orgId","accountNumb"); 
},

createSession : function(userId, tenantId, orgUnit, userAccountNum) {
var self = this;
var showHtml = function(data){
           if(data.status == "valid"){
           sessionId = data.session.sessionId;// This variable to be used in another js file
           self.displayHtml(self, sessionId);   
           }else{
                //  To be implemented Later
           }
    }
    $.ajax({
         type : 'post',
         url : "url",
         success : showHtml,
         error : function(){
        alert("An Error Occurred while creating session");
         }
    });
},

然后在另一个文件(HeaderView.js,包括 -after- HomeRoute.js)中,您可以简单地访问该变量:

alert(sessionId);

...当然,假设 post 函数已经返回。(并且还假设您可以在 JS 中更改对象范围之外的变量,我对此并不肯定。如果不是,您将不得不从实例化的 HomeRoute 对象返回值并将其分配给 sessionId .)

于 2013-10-10T16:46:28.510 回答
0

如果 sessionId 是 HomeRoute 的关键部分,则可以将其作为模型的一部分,并在初始化程序下对其进行初始化:

var HomeRoute = BackBone.Model.extend({
    initialize: function() { 
        this.sessionId = null;
    },
...
}

并在“showHtml”下更新:

var showHtml = function(data){
           if(data.status == "valid"){
           self.sessionId = data.session.sessionId;// This variable to be used in another js file
           self.displayHtml(self, sessionId);   
           }else{
                //  To be implemented Later
           }
    }

您需要在视图文件中导出模型对象才能访问 sessionId

var _homeRoute = new HomeRoute ();
var _sid = _homeRoute.sessionId;
于 2013-10-10T16:56:44.813 回答