gpt4 book ai didi

javascript - 想要从函数访问变量以在主干中渲染函数

转载 作者:行者123 更新时间:2023-12-03 06:45:41 25 4
gpt4 key购买 nike

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 窗口对象的全局变量,该变量位于一个函数内,我真的不知道它是在哪里声明的。但这在现阶段并不重要。

第二你想通过调用上面的函数来获取分配给全局变量的值,该函数不返回任何内容。

这里有几个选择:要么将值分配给全局变量(这是一个非常糟糕的做法,在任何情况下都应该避免这样做)。

更好的方法是简单地返回id:

getGeoLevelDetails: function(id) {
return id;
}

稍后您可以通过调用renderGeoLevelDetails函数来获取此id。

renderGeoLevelDetails: function(response, obj) {
var id = this.getGeoLevelDetails();
}

请注意,仅当您从同一范围调用 this.getGeoLevelDetails 函数时,此方法才有效,因为 this 是同一对象的实例。

您的代码中关于这一行还有另一个大错误:

this.getGeoLevelDetails.gid;

首先,您不是作为函数调用,而是作为实例变量调用,期望返回全局声明的对象。这就是您得到的原因:

Uncaught TypeError: Cannot read property 'gid' of undefined

<小时/>

TL;DR

总而言之,如果您希望将值从模型传输到 View ,您可以通过调用 View 内的模型来访问它,或者如果您希望在同一 View 内获取值,您可以使用所提供的方法如上所述。

如果上述解决方案均不能满足您的需求,您可以采用另一种方法:扩展 Backbone 对象,然后声明一个接收所需值的对象变量。这样您就可以消除全局污染问题:

示例:

Backbone.Details = _.extend({}, Backbone.Router);   
Backbone.Details.geoLevel = id;

此变量:Backbone.Details.geoLevel 然后可以从应用程序中的任何位置访问。

关于javascript - 想要从函数访问变量以在主干中渲染函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com