想要在 backbone 中访问从函数到渲染函数的变量
want to access variable from function to render function in backbone
getGeoLevelDetails: function(id) {
window.gid = id;
}
我想在 renderGeoLevelDetails
函数中访问 window.gid
renderGeoLevelDetails: function(response, obj){
var id = this.getGeoLevelDetails.gid;
console.log(id);
}
它显示我的输出为
Uncaught TypeError: Cannot read property 'gid' of undefined
您的方法有一些错误。
首先 你定义了一个分配给 DOM window 对象的全局变量,这个在一个我真的不知道它在哪里的函数中宣布。但这在现阶段并不重要。
其次你想通过调用上面的函数来获取赋给全局变量的值,而return什么都没有。
您在这里有几个选择:要么将值分配给全局变量(这是一种非常糟糕的做法,无论如何都应该避免这种情况)。
更好的方法是简单地 return id
:
getGeoLevelDetails: function(id) {
return id;
}
稍后调用renderGeoLevelDetails
函数即可获取此id
renderGeoLevelDetails: function(response, obj) {
var id = this.getGeoLevelDetails();
}
请注意,这仅在您从同一范围调用 this.getGeoLevelDetails
函数时有效,因为 this
是同一对象的实例。
关于这一行,您的代码中还有一个大错误:
this.getGeoLevelDetails.gid;
首先,您 不是 作为函数调用,而是作为实例变量调用,期望 return 全局声明的对象。这就是您得到的原因:
Uncaught TypeError: Cannot read property 'gid' of undefined
TL;DR
总而言之,如果您希望将值从模型传输到视图,您可以通过在视图内调用模型来访问它,或者如果您希望在同一视图内获取值,您可以使用上面介绍的方法。
如果上述 none 解决方案满足您的需求,您可以使用另一种方法:扩展 Backbone 对象,然后声明一个接收所需值的对象变量。这样您将消除全球污染问题:
示例:
Backbone.Details = _.extend({}, Backbone.Router);
Backbone.Details.geoLevel = id;
此变量:Backbone.Details.geoLevel
然后可以从您的应用程序中的任何位置访问。
getGeoLevelDetails: function(id) {
window.gid = id;
}
我想在 renderGeoLevelDetails
函数中访问 window.gid
renderGeoLevelDetails: function(response, obj){
var id = this.getGeoLevelDetails.gid;
console.log(id);
}
它显示我的输出为
Uncaught TypeError: Cannot read property 'gid' of undefined
您的方法有一些错误。
首先 你定义了一个分配给 DOM window 对象的全局变量,这个在一个我真的不知道它在哪里的函数中宣布。但这在现阶段并不重要。
其次你想通过调用上面的函数来获取赋给全局变量的值,而return什么都没有。
您在这里有几个选择:要么将值分配给全局变量(这是一种非常糟糕的做法,无论如何都应该避免这种情况)。
更好的方法是简单地 return id
:
getGeoLevelDetails: function(id) {
return id;
}
稍后调用renderGeoLevelDetails
函数即可获取此id
renderGeoLevelDetails: function(response, obj) {
var id = this.getGeoLevelDetails();
}
请注意,这仅在您从同一范围调用 this.getGeoLevelDetails
函数时有效,因为 this
是同一对象的实例。
关于这一行,您的代码中还有一个大错误:
this.getGeoLevelDetails.gid;
首先,您 不是 作为函数调用,而是作为实例变量调用,期望 return 全局声明的对象。这就是您得到的原因:
Uncaught TypeError: Cannot read property 'gid' of undefined
TL;DR
总而言之,如果您希望将值从模型传输到视图,您可以通过在视图内调用模型来访问它,或者如果您希望在同一视图内获取值,您可以使用上面介绍的方法。
如果上述 none 解决方案满足您的需求,您可以使用另一种方法:扩展 Backbone 对象,然后声明一个接收所需值的对象变量。这样您将消除全球污染问题:
示例:
Backbone.Details = _.extend({}, Backbone.Router);
Backbone.Details.geoLevel = id;
此变量:Backbone.Details.geoLevel
然后可以从您的应用程序中的任何位置访问。