簡體   English   中英

如何綁定到以功能為參數的功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM