如何使用此关键字的方法访问类属性

时间:2016-09-25 11:31:24

标签: javascript leaflet

我正在尝试为Leaflet地图查看器开发插件。我有一个带有选项属性列表的类,但当我尝试使用此onAdd方法访问它们时,使用此键工作无效。

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方法访问min和max属性?现在我正在

  

&#34; TypeError:this.options未定义&#34;

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

1 个答案:

答案 0 :(得分: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