我正在尝试为Draw交互(OpenLayers 4)找出一种具有app-contextual样式函数的方法。
我有一个使用自定义样式函数(我的一个对象的原型方法)构建的Draw Interaction,但问题是该函数将使用 this 作为 Window < / em>,所以我无法访问我的应用程序上下文。
由于我不对该电话负责(由OpenLayers调用),我无法指定我想要的 this 。
我是否在OpenLayer API或javascript(我不是专家)中没有看到可以解决我的问题的详细信息?
这是我的代码:
function MyClass(){
(...)
// This state should impact the draw interaction style
this.myState = someValue;
// My interaction
this.addInteraction = new ol.interaction.Draw({
(...)
style: this.styleFunction
});
}
// My style function which need to access this.myState
MyClass.prototype.styleFunction = function( feature, resolution ) {
// The following this is Window instead of MyClass.this
if( this.myState )
return style1;
else
return style2;
}
将MyClass.this添加为Window属性不是解决方案,因为我可能有多个MyClass实例。
感谢您的任何建议
答案 0 :(得分:0)
我终于找到了解决方案:
Function.prototype.bind()
方法可以完成相同的工作。在为交互提供样式功能时使用它:
style: this.styleFunction.bind(this)
更多信息:Documentation