我使用纯javascript:创建这个类
var SelectFeature = /*@__PURE__*/(function (Select) {
function SelectFeature() {
Select.call(this, {
condition: ol.events.condition.click
});
}
this.on('select', function (e) {
//some logic
});
if (Select) SelectFeature.__proto__ = Select;
SelectFeature.prototype = Object.create(Select && Select.prototype);
SelectFeature.prototype.constructor = Select;
return SelectFeature;
}(ol.interaction.Select));
如您所见,我将ol.interaction.Select作为参数传递给类,并使用Select.call((将SelectFeature中的方法作为构造函数。
以下是ol.interaction.Select类的描述。
ol.interaction.select类有一个名为getFeatures((的成员。当点击一些DOM元素时,我试图访问这个方法(这个块在SelectFeature类中(:
$("#popupFeat-closer").click(function () {
this.getFeatures();
});
上面的代码是在单击DOM元素时激发的,但是,在此行中:
this.getFeatures();
我得到这个错误:
Uncaught TypeError: this.getFeatures is not a function
我的问题是如何访问位于点击事件处理程序中的getFeatures函数?
就像评论中提到的那样,您有一个上下文问题。几乎每个库或框架都有一个保持上下文的方法,在jQuery中,可以使用proxy
方法来实现这一点。像这样的东西应该行得通,
$("#popupFeat-closer").click($.proxy(function () {
this.getFeatures();
}), this);
我想说,使用库/框架的方法来解决这些问题总是很好的,但"旧"的方法也有效,
var self = this;
$("#popupFeat-closer").click(function () {
self.getFeatures();
});
jQuery文档-代理