如何将变量传递给angular forEach中的函数调用

时间:2015-02-17 12:56:28

标签: javascript angularjs angularjs-scope angular-leaflet-directive

我正在使用传单指令在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)。

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

1 个答案:

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