2013-10-10 3 views
0

BackBone.Model.extend 구현이있는 응용 프로그램에 HomeRoute.js 파일이 있습니다. 나에게 세션 json을 제공하는 HomeRoute.js의 render 메서드에서 아약스를 호출하고있다. 이제이 json에서 변수 sessionId를 추출하려고하는데이 sessionId 변수를 다른 HeaderView.js 파일에서 사용하고 싶습니다. backbone.js의 다른 js 파일에서 javascript 변수에 액세스

나는 이것에 많이 연구하지만

HomeRoute.js의 코드 HeaderView.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

감사합니다. Leng. HomeRoute.js를 HeaderView.js에 포함시키는 방법을 보여줄 수 있습니까? – rkj

+0

@rkj 그렇게하지 않아도됩니다. 먼저 동일한 HTML 페이지 인 HomeRoute에 둘 다 포함 할 수 있습니다. – Leng

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 
      } 
    } 

귀하의 동영상에서 모델 개체를 내 보내야합니다 세션 ID에 액세스하려면 w 파일을 사용하십시오.

var _homeRoute = new HomeRoute(); 
var _sid = _homeRoute.sessionId; 
관련 문제