如何使用Dojo引用Google Maps事件中的包含类
How do I reference the containing class from a Google Maps event using Dojo?
我正在做一些工作,将一个使用Google Maps API v2到v3的遗留项目转换为v3。
有一个Dojo类看起来像这样:
dojo.declare
(
"MyNamespace.MapControl",
null,
{
constructor: function() {
var mapElement = document.getElementById("map");
this._map = new google.maps.Map(mapElement, {});
google.maps.event.addListenerOnce(this._map, "idle", this.map_load);
},
map_load: function() {
this.onLoad();
},
onLoad: function () { }
}
);
问题是,当调用map_load函数时,this的上下文是Google map,而不是类。
我尝试在类中创建一个局部变量self,并使用
_self = this;
在构造函数中,但该变量没有onLoad函数。这是使用的代码:
dojo.declare
(
"MyNamespace.MapControl",
null,
{
_self: null,
constructor: function() {
var mapElement = document.getElementById("map");
this._map = new google.maps.Map(mapElement, {});
google.maps.event.addListenerOnce(this._map, "idle", this.map_load);
_self = this;
},
map_load: function() {
_self.onLoad(); // fails as onLoad is undefined
},
onLoad: function () { }
}
);
Dojo中有没有一种方法可以在*map_load*函数中获得对父类的引用,或者有没有其他方法可以将其连接起来?
使用dojo.hitch(/*Object*/ scope, /*Function|String*/ method)
:
google.maps.event.addListenerOnce(this._map, "idle", dojo.hitch(this, "map_load"));
有关更多信息,请参阅http://livedocs.dojotoolkit.org/dojo/_base/lang#hitch
相关文章:
- 在添加或删除之前,正在使用检查classList是否包含类
- 如何使用Dojo引用Google Maps事件中的包含类
- jQuery点击事件处理类元素和内部元素
- 如何找到td类并检查它是否包含类,然后我需要显示弹出窗口
- 如何选择不包含类/id 的项目 - jquery.
- 节点.js包含类文件
- JavaScript - 基于单击事件切换类
- 如何使用 jQuery 或 JavaScript 根据当前 URL 和 click 事件将类“active”分配给 li
- 为每个包含类的元素执行 jQuery 函数
- 如何淡入包含类的元素'隐藏'在基础6中
- 检查第(n)个元素是否包含类名
- 将css应用于具有onclick事件的类
- 如果子级包含类,如何将类添加到父级
- Meteor:在点击事件中将类添加到表元素中
- 使用jQuery添加图像标记-如何包含类名
- Jquery获取触发事件的类的特定实例
- 根据事件替换类
- 如果子节点包含类,则隐藏父节点
- JQuery点击事件在类更改后不能正常工作
- (CSS):我可以通过触发一个事件或两个事件包含的类名来同时触发两个CSS事件吗?