2016-09-25 74 views
2

我正在嘗試爲Leaflet地圖查看器開發插件。我有一個帶有選項屬性列表的類,但是當我嘗試訪問它們時,使用這個關鍵字的方法不起作用onAdd如何從使用此關鍵字的方法訪問類propertys

L.btsControl = L.Control.extend({ 
options: { 
    position: 'topright', 
    //control position - allowed: 'topleft', 'topright', 
    //'bottomleft', 'bottomright' 
    minValue: 'isss', 
    min: 0, 
    max: 1, 
    maxValue: '', 
}, 

initialize: function (options) { 
    L.Util.setOptions(this, options); 
}, 

onAdd: function (map) { 
    this._map = map; 
    this._map.eachLayer(function (layer){ 
     if (layer.options.time_i > this.options.max) { 
      this.options.maxValue = layer.options.time; 
     } 
     if (layer.options.time_i < this.options.min) { 
      this.options.minValue = layer.options.time; 
     } 
    }); 

//SKIPED CODE 

    return container; 
}, 

那麼,如何從onAdd方法訪問最小和最大屬性?現在我越來越

"TypeError: this.options is undefined"

調用函數是:var mycontrol = new L.btsControl().addTo(map);

+0

我編輯問題 – Bungow

+0

請拼寫檢查您的文章和標題。 – 2016-09-25 13:53:33

回答

1

您提供.eachLayer()回調函數沒有你想要的內容。您可以通過該功能結合到你的this解決此問題:

this._map.eachLayer(function (layer){ 
    if (layer.options.time_i > this.options.max) { 
     this.options.maxValue = layer.options.time; 
    } 
    if (layer.options.time_i < this.options.min) { 
     this.options.minValue = layer.options.time; 
    } 
}.bind(this)); 

How does the this keyword work