我在应用程序中有一个HomeRoute.js文件,该文件具有BackBone.Model.extend实现。我在这个HomeRoute.js的render方法中调用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");
}
});
},
任何领导对我都非常有帮助。
答案 0 :(得分:0)
有很多方法可以做到这一点。
我只是在HomeRoute(在同一个文件中)之外创建一个名为sessionId的变量(现在你只在showHtml函数中有该变量,在HomeRoute对象中;在范围内将它移动得更高)。在此顶级范围内的任何变量都可以在此之后包含的其他.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。)
答案 1 :(得分: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;