javascript - 为什么JS说这个函数不是函数
问题描述
我试图了解这里发生了什么......我正在开发这个项目,该项目使用带有地址自动完成的谷歌地图。place_changed
当用户选择触发方法的地址时,会有一个回调onPlaceChanged()
。
问题是在该方法中我不能调用任何其他方法,它给出了这个错误:
TypeError:this.er 不是函数
但是功能是存在的。
class MyMap {
constructor() { }
maps() {
autocomplete = new google.maps.places.Autocomplete(
document.getElementById('city-name'),
{ types: [ 'geocode' ] } );
autocomplete.addListener('place_changed', this.onPlaceChanged);
}
onPlaceChanged() {
this.er();
}
er() {
console.log('please call me');
}
}
解决方案
我猜问题是this
范围界定。
Autocomplete
调用你的函数onPlaceChanged
,但可能没有设置范围,因为你没有告诉Autocomplete
你想要哪个范围。
您可以使用以下方法解决此问题:
autocomplete.addListener('place_changed', this.onPlaceChanged.bind(this));
这将生成一个新函数,该函数this
在调用原始函数之前自动绑定为范围onPlaceChanged
。
推荐阅读
- flask - 将列表传递给引导网格模板的有效方法
- c++ - 对象作为参数析构函数被调用但不是构造函数?
- reactjs - 如何使用 React Native 库使 Jest 测试用例适用于 React 组件?
- drools - 流口水规则中的输入不匹配
- azure - 当托管在 Linux 容器中时,ASP.NET Core 在 OAuth 质询中传递 HTTP(不是 HTTPS)重定向 URL
- django - self.client.get() 与 self.browser.get() 的用法
- excel - 无法从 VBA 正确打开网络驱动器
- node.js - 如何使用续集删除唯一选项
- javascript - 未捕获的 typeEroor:无法读取未定义的属性
- bash - 运行 if 语句时出现太多参数错误