0

我正在使用传单指令在 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)中打开最后一个项目。

如何在每次迭代中绑定范围值?,所以我可以在每个标记上打开正确的项目

4

1 回答 1

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 指出要传递键值。

于 2015-02-18T08:17:10.597 回答