2013-10-10 101 views
0

我的應用程序中有一個HomeRoute.js文件,它具有BackBone.Model.extend實現。我在這個HomeRoute.js的render方法中調用了一個ajax,它爲我提供了會話json。現在從這個json我想提取一個變量sessionId,我想在另一個HeaderView.js文件中使用此sessionId變量。在backbone.js中的另一個js文件中訪問javascript變量

我研究了很多關於這一點,但找不到任何方式這個變量傳遞給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"); 
     } 
    }); 
}, 

任何鉛將非常有助於我。

回答

0

有很多方法可以做到這一點。

我只是在HomeRoute之外(在同一個文件中)創建一個名爲sessionId的變量(現在你只在HomeRoute對象的showHtml函數中有這個變量;它在範圍中移動得高得多)。其他包含在您的HeaderView.js文件中的.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 。)

+0

感謝冷。你還可以展示如何在HeaderView.js中包含HomeRoute.js。 – rkj

+0

@rkj你不需要那樣做。您可以將它們都包含在同一個HTML頁面中,首先是HomeRoute。 – Leng

0

如果會話id 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 
      } 
    } 

您需要在您的vie中導出模型對象w文件以獲得訪問會話ID

var _homeRoute = new HomeRoute(); 
var _sid = _homeRoute.sessionId; 
相關問題