动态添加内容到Angular承诺创建的元素中
Add Content To Dynamically, Angular Promise Created Elements
我有一个使用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;
}
您需要从getPopupContent
方法返回承诺,然后您可以在准备好时处理结果。实际上,您只是调用一个promise并返回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);
}
相关文章:
- 在运行时创建元素时移到一边时出错
- 如何在动态创建元素的内联onclick事件中传递对象
- 在 jquery 中创建元素
- 当我动态创建元素时,选择的插件不起作用
- HTML javascript函数来创建元素
- 从外部 js 脚本创建元素并插入到 html 中
- 在 d3 中为数据列表创建元素
- 如何在循环中创建元素并将其添加到DOM中
- JQuery-创建元素并将其连接到其他html
- 创建元素更好还是只在html上准备好它们
- 挂钩文档.使用函数原型创建元素
- Javascript动态创建元素和onclick函数
- 从任何jquery选择器字符串创建元素的最有效方法
- 动态创建元素和添加onclick事件不起作用
- 在javascript中创建元素时,CSS转换规则固有地被覆盖
- 如何在特定的HTML标记下用JavaScript创建元素
- 如何根据我正在读取的节点的元素名称创建元素
- 使用Jquery在元素中创建元素
- 使用JavaScript创建元素并使用它
- 将托管 Bean 与 javascript 结合使用来创建元素