在ArcGIS JS API中,当扩展更改后的处理完成时,我需要触发类的一个方法。我没有为此找到任何特别的活动。
extent-change
在数据尚未加载时过早触发。
update-end
也由我想调用的函数触发,形成一个无休止的循环。所以我需要的是将这两个事件联系在一起,第二个事件只需一次。但如何?
我的大多数活动都是这样的:
this.events.push(on(this.map, "extent-change", lang.hitch(this, this._foo)));
这不适合事件链接,因此我需要以其他方式创建链接的事件。我所尝试的:
_foo: function () {
function fooEvent() {
this._bar();
dojo.disconnect(updateHandle);
}
var updateHandle = dojo.connect(map, "onUpdateEnd", fooEvent());
}
_bar
是我希望在扩展更改结束时运行的方法。然而
this
在事件处理程序中表示其他内容,而不是包含函数的类。我还尝试了我在
declare
声明,但运气不佳。
_foo()
和
_bar()
我们在同一个班级
"foobar/baz"
). 然而,在
fooEvent()
并不像我希望的那样是它的子类——当我尝试使用
this.inherited
在它里面,它是未定义的。我尝试的另一种方法是添加
event
参数,但它也是未定义的。因此,除非有更好的方法,否则我需要了解如何获得
“foobar/baz”
班
我尝试的另一种方法是
lang.hitch
再次以以下方式之一:
var updateHandle = dojo.connect(map, "onUpdateEnd", lang.hitch(this, clusterEvent));
var updateHandle = dojo.connect(map, "onUpdateEnd", { langh:lang.hitch(this, this._bar), disc:dojo.disconnect(updateHandle)});
dojo.on(map, "onUpdateEnd", lang.hitch(this, this._bar));
它们都没有返回任何明确的错误,尽管
_bar()
这个方法似乎在一段时间内奏效了,但现在行不通了,这对前面的三种方法都是如此。我不明白这些听众在做什么。