![](/img/trans.png)
[英]How to pass an onClick event handler a function that takes a parameter and still bind the function to the component's “this” context?
[英]How to bind to function that takes function as parameter
我有以下內容,我希望將參數從onDeselectionStyle的更高上下文傳遞給eachlayer方法。
clearAll: function(){
this.map.eachLayer(function(layer){
if(layer.options.clicked == true){
layer.options.clicked == false;
layer.setStyle(this.onDeselectionStyle);
}
})
}
我知道我需要將此綁定到函數,但是我不知道如何以這種格式進行操作。 謝謝
選項1
您可以在函數聲明中使用原型綁定方法:
clearAll: function () {
this.map.eachLayer(function (layer) {
if (layer.options.clicked == true) {
layer.options.clicked == false;
layer.setStyle(this.onDeselectionStyle);
}
}.bind(this))
}
選項2
如果使用的是ES6,則可以使用箭頭功能,該功能將使用父作用域:
clearAll: function () {
this.map.eachLayer(layer => {
if (layer.options.clicked == true) {
layer.options.clicked == false;
layer.setStyle(this.onDeselectionStyle);
}
})
}
選項3
這實際上與綁定上下文沒有多大關系,但是您可以將范圍存儲在一個可訪問的變量中,以供以后使用:
clearAll: function () {
var that = this;
this.map.eachLayer(function(layer) {
if (layer.options.clicked == true) {
layer.options.clicked == false;
layer.setStyle(that.onDeselectionStyle);
}
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.