Ionic / Leaflet.js:如何从L.Draw.Event.CREATED事件中调用函数?

时间:2018-05-21 20:31:25

标签: ionic2 leaflet.draw

我正在使用Leaftlet Draw在地图上绘制简单的形状。创建形状后,我想调用另一种方法。

我正在听这样的CREATE事件:

drawMap() {
    this.myMap = L.map('map', {
        crs: L.CRS.Simple
    });

    ...

    this.myMap.on(L.Draw.Event.CREATED, function (e) {
      let type = e.layerType;
      let layer = e.layer;

      this.myOtherMethod();  // this.myOtherMethod is not a function

      drawLayer.addLayer(layer);
    });
}

myOtherMethod() {
    console.log('hello world!');
}

如果我从事件监听器中取出this.myOtherMethod();,它会调用它,所以我知道这是一个范围问题。我不知道如何调用父范围。

感谢您的任何建议!

1 个答案:

答案 0 :(得分:1)

不使用匿名函数作为回调,而是创建一个单独的命名函数,然后可以调用 public static HashSet<Drow> GetRows() { HashSet<Drow> Drows = new HashSet<Drow>(); SqlCommand cmd = new SqlCommand(); SqlDataReader rdr = cmd.ExecuteReader(); int a; int b; double c; string d; while(rdr.Read()) { a = rdr.GetInt32(0); b = rdr.GetInt32(1); c = rdr.GetDouble(2); d = rdr.GetString(3); Drow drow = new Drow(a, b, c, d); Drows.Add(drow); //it just will not add if it is a duplicat } return Drows; } } class Drow : object { int ai; int bi; public string A { get; } public string B { get; } public double C { get; } public string D { get; } public Drow(int a, int b, double c, string d) { ai = a; bi = b; A = a.ToString(); B = b.ToString(); C = c; D = d; } public override bool Equals(Object obj) { // Check for null values and compare run-time types. if (obj == null || GetType() != obj.GetType()) return false; Drow r = (Drow)obj; return (A == r.A) && (B == r.B); } public override int GetHashCode() { return ai ^ bi; } }

myOtherMethod