我有一张使用Angular Service获取数据的地图。数据被传递给一个循环通过它创建标记的函数。每个循环调用一个函数,应该为每个标记创建一个弹出窗口,但显示为空白。
当我将弹出内容记录到控制台时,它会在几秒钟后显示,但我无法弄清楚如何将其传递给标记。我觉得这与封闭有关,我一直在调查。这是我的代码:
//Create the Markers Function
var createMapMarkers = function (data) {
angular.forEach(data, function (value, key) {
//Calling the get popup content function here
var content = getPopupContent(value.AreaName, value.ImageUrl);
var marker = L.marker([value.Lat, value.Long])
.bindPopup(content)
.addTo($scope.map);
});
}
function getPopupContent(areaName, imageUrl) {
var response;
$http.get('/Home/GetPopupContent?areaName=' + areaName + '&imageUrl=' + imageUrl)
.then(function (response) {
//This logs the correct content
console.log(response);
});
//But it does not return here
return response;
}
答案 0 :(得分:2)
您需要从getPopupContent
方法返回承诺,然后您可以在结果准备就绪时处理结果。实际上,您只是致电承诺并返回undefined
。
var createMapMarkers = function (data) {
angular.forEach(data, function (value, key) {
//Calling the get popup content function here
getPopupContent(value.AreaName, value.ImageUrl).then(function(content) {
var marker = L.marker([value.Lat, value.Long])
.bindPopup(content)
.addTo($scope.map);
});
});
}
function getPopupContent(areaName, imageUrl) {
return $http.get('/Home/GetPopupContent?areaName=' + areaName + '&imageUrl=' + imageUrl);
}