Angularjs ng-repeat переданный индекс не определен

HangulSR спросил: 07 октября 2018 в 12:22 в: javascript

Я пытаюсь включать и выключать кнопку в режиме ng-repeat, представление на карте работает, но когда оно изменяется, удаляя маркер, мне выдается ошибка 'ReferenceError: passIndex is not определена' в журнале консоли. Есть ли способ это исправить?

HTML:

            <li class="displaySubCategory" ng-repeat="communityTheme in community | startFrom:currentPage*pageSize | limitTo:pageSize">
              <div class="categoryImg">
                <img src="img/csvIcon.png" />
                <img src="img/shpIcon.png" />
              </div>
              <div class="categoryDesc">
                <p>{{communityTheme.THEMENAME}}</p>
                <a href="" ng-hide="communityTheme.visibility" ng-click="getMapData(communityTheme.QUERYNAME, $index)">View on Map</a>
                <a href="" ng-show="communityTheme.visibility" ng-click="removeMarker(communityTheme.QUERYNAME, $index)">Remove Marker</a>
              </div>
            </li>

JS:

        $scope.getMapData = function (msg, passedIndex) {
                map.addLayer(cities);                $scope.Lng.length = 0;
                $scope.Lat.length = 0;
                $scope.dataLatLng.length = 0;               queryNameUrl = 'https://developers.onemap.sg/publicapi/themeapi/retrieveTheme?queryName=' + msg +
               '&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjMsInVzZXJfaWQiOjMsImVtYWlsIjoicHVibGljQXBpUm9sZUBzbGEuZ292LnNnIiwiZm9yZXZlciI6ZmFsc2UsImlzcyI6Imh0dHA6XC9cL29tMi5kZmUub25lbWFwLnNnXC9hcGlcL3YyXC91c2VyXC9zZXNzaW9uIiwiaWF0IjoxNTQwOTI5OTE2LCJleHAiOjE1NDEzNjE5MTYsIm5iZiI6MTU0MDkyOTkxNiwianRpIjoiYjVkNmZkNGJhOWJiNGJiM2FkNWQzN2ZhNTAzMGIxYWEifQ.YQdfV43wrg8dX-He7-mwIL2Qhjsexq0tgNu5RotAdu4';
               $http.get(queryNameUrl).then(function(response) {
                 $scope.apiResult = response.data.SrchResults;
                 $scope.apiResult.splice(0,1);
                 console.log($scope.apiResult)                       for (var i= 0; i < $scope.apiResult.length; i++) {
                            if ($scope.apiResult[i].Type == "Point"){
                              $scope.apiResult[i].visibility = true;
                              console.log($scope.apiResult)
                              $scope.dataLatLng.push($scope.apiResult[i].LatLng)
                              $scope.Lat.push($scope.dataLatLng[i].split(',')[0]);
                              $scope.Lng.push($scope.dataLatLng[i].split(',')[1]);
                              L.marker([$scope.Lat[i], $scope.Lng[i]], {icon: greenIcon}).bindPopup($scope.apiResult[i].DESCRIPTION).addTo(cities);
                            }
                              // else if ($scope.apiResult[i].Type == "Polygon"){
                              //       $scope.PolyLine.push($scope.apiResult[i].LatLng)
                              //       console.log($scope.PolyLine)
                              //       // for (var i = 0; i < $scope.PolyLine.length; i++) {
                              //       //     $scope.polyLineCord.push($scope.PolyLine[i])
                              //       //     // console.log($scope.polyLineCord)
                              //       // }
                              //   }
                       }
               })
               if($scope.community[passedIndex].visibility)
                {
                  $scope.community[passedIndex].visibility = false;
                }
               else{
                 $scope.community[passedIndex].visibility = true;
               }
        }

Удалить маркер:

        $scope.removeMarker = function ($index) {            if($scope.community[passedIndex].visibility)
             {
               $scope.community[passedIndex].visibility =false;
               cities.clearLayers();
             }
            else {
              $scope.community[passedIndex].visibility = true;
            }
        }

Заранее благодарим за помощь!

0 ответов