我有一个方法submitAdd()
从另一个方法polygonDrawer()
获取价值
问题是我在undefined
方法获得submitAdd()
值。
这似乎是一个问题。
polygonDrawer()
{
var i;
var map;
var cords = [];
google.maps.event.addListener(drawingManager, 'polygoncomplete', function (polygon) {
field.setPath(polygon.getPath().getArray());
field.setMap(map);
for (var i = 0; i < field.getPath().getLength(); i++) {
cords.push(field.getPath().getAt(i).toUrlValue(6));
text += field.getPath().getAt(i).toUrlValue(6) + "#";
}
this.pointSTR2=text.slice(0, -1);
});
}
pointSTR2:any;
submitAdd() {
console.log("**"+this.pointSTR2); // undefined
}
答案 0 :(得分:1)
问题与范围有关,您可以通过两种方式解决此问题:
1)使用胖箭
function (polygon) {
至(polygon) => {
喜欢:
polygonDrawer()
{
...
google.maps.event.addListener(drawingManager, 'polygoncomplete', (polygon) => {
....
this.pointSTR2=text.slice(0, -1);
});
}
2)使用.bind()
:
polygonDrawer()
{
...
google.maps.event.addListener(drawingManager, 'polygoncomplete', function(polygon){
....
this.pointSTR2=text.slice(0, -1);
}).bind(this);
}
答案 1 :(得分:0)
您有以下代码 async
google.maps.event.addListener(drawingManager, 'polygoncomplete', function (polygon) {
如果要在之后使用可用的值,则需要对此函数进行链接。这样做的方法:
在JavaScript中查找异步编程
答案 2 :(得分:0)
首先你需要在函数范围之外声明pointSTR2
(作为全局变量)然后使用它
试试这个
pointSTR2 = ""
polygonDrawer()
{
var i;
var map;
var cords = [];
google.maps.event.addListener(drawingManager, 'polygoncomplete', function (polygon) {
field.setPath(polygon.getPath().getArray());
field.setMap(map);
for (var i = 0; i < field.getPath().getLength(); i++) {
cords.push(field.getPath().getAt(i).toUrlValue(6));
text += field.getPath().getAt(i).toUrlValue(6) + "#";
}
pointSTR2=text.slice(0, -1);
});
}
然后使用pointSTR2
关键字使用this
。
submitAdd() {
console.log("**"+this.pointSTR2); // undefined
}