我正在使用传单指令在openStreet地图上显示地图。要列出我的代码所有标记:
$scope.goTo = function() {
restAPI.getSomething().success(function(data) {
var anArray = data.lists;
console.log(anArray);
var anotherList = {};
angular.forEach(anArray, function(value, key) {
if (value.geolocation) {
$scope.project = value;
anotherList[anArray[key].ao] = {
lat: value.lat,
lng: value.lng,
focus: false,
draggable: false,
icon: icon,
message: '<button type="button" ng-click="openProject(project)">' + value.ao + '</button> {{project.ao}}',
clickable: true
}
}
});
$scope.map.anotherList = anotherList;
});
}
在这个消息模板中我添加了一个带有函数调用的按钮,正如我所知,在模板中传递变量,Scope是解决方案,但是在这里,所有标记上的value.ao名称不同但是project.ao是同样......(为什么????)
当我点击每个标记时,它在数组中打开最后一个项目(anArray)。
如何在每次迭代中绑定范围值?,所以我可以在每个标记上打开正确的项目
答案 0 :(得分:0)
我的工作解决方案如下:
$scope.goTo = function() {
restAPI.getSomething().success(function(data) {
var anArray = data.lists;
console.log(anArray);
var anotherList = {};
$scope.project = {};
angular.forEach(anArray, function(value, key) {
if (value.geolocation) {
$scope.project[key] = value;
anotherList[anArray[key].ao] = {
lat: value.lat,
lng: value.lng,
focus: false,
draggable: false,
icon: icon,
message: '<button type="button" ng-click="openProject('+key+')">' + value.ao + '</button> {{project.ao}}',
clickable: true
}
}
});
$scope.map.anotherList = anotherList;
});
}
$scope.openProject = function(key){
var project = $scope.project[key];
// this is how i got correct project
}
感谢Edwin指出传递键值。