我正在使用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();
,它会调用它,所以我知道这是一个范围问题。我不知道如何调用父范围。
感谢您的任何建议!
答案 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