访问backbone.js中另一个js文件中的javascript变量
我在应用程序中确实有一个HomeRoute.js文件,它有BackBone.Model.extend实现。我在这个HomeRoute.js的render方法中调用一个ajax,它为我提供了json会话。现在,我想从这个json中提取一个变量sessionId,并在另一个HeaderView.js文件中使用这个sessionId变量 我对此做了很多研究,但找不到任何方法将此变量传递给HeaderView.js HomeRoute.js代码访问backbone.js中另一个js文件中的javascript变量,javascript,backbone.js,Javascript,Backbone.js,我在应用程序中确实有一个HomeRoute.js文件,它有BackBone.Model.extend实现。我在这个HomeRoute.js的render方法中调用一个ajax,它为我提供了json会话。现在,我想从这个json中提取一个变量sessionId,并在另一个HeaderView.js文件中使用这个sessionId变量 我对此做了很多研究,但找不到任何方法将此变量传递给HeaderView.js HomeRoute.js代码 var HomeRoute = BackBone.Mode
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");
}
});
},
任何线索都会对我很有帮助。有很多方法可以做到这一点 我只是在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。如果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;
谢谢你,冷。您还可以演示如何在HeaderView.js中包含HomeRoute.js。@rkj您不需要这样做。您可以将它们都包含在同一个HTML页面中,即HomeRoute first。