AngularJs, ngRepeat не работает - PullRequest
0 голосов
/ 25 апреля 2018

Я использую AngularJs. Я показываю карты Google с маркерами. После нажатия на маркер я показываю информацию о кликнувшем маркере.

Вот мой Controller.js

  function createMarker(latitude,longitude,name,address,locationId,sid){
      var marker = new google.maps.Marker({
        map: $scope.map,
        position: new google.maps.LatLng(latitude,longitude),
        title: name
        });
       $scope.leadsForMap=[];
       $scope.location={};
       google.maps.event.addListener(marker, 'click', function() {
       $scope.location = {
                name: name,
                sid: sid,
                address: address,
                locationId:locationId
                };
       $scope.leadsForMap.push($scope.location);
       $scope.markers.push(marker);
   }

В html я пытаюсь зациклить массив $scope.leadsForMap и вывести на экран определенные детали после щелчка вот так

HTML

    <div  data-ng-repeat="location in leadsForMap track by $index" data-ng-
    if="leadsForMap.length>0">
    {{$index+1}} {{location.name}} - {{location.sid}},{{location.address}}
    </div>   

Но этот div вообще не отображается, даже если $scope.leadsForMap имеет значение. Может кто-нибудь сказать, где это не так?

1 Ответ

0 голосов
/ 25 апреля 2018

Вам нужно использовать

$scope.$apply()

Нужно использовать $scope.$apply, когда событие выходит за рамки углового и угловое не будет запускать цикл дайджеста, поскольку оно выходит за рамки.

Вам нужно запустить цикл дайджеста, который будет запускаться вручную с помощью $ scope. $ Apply ()

google.maps.event.addListener(marker, 'click', function() {
       $scope.location = {
             name: name,
             sid: sid,
             address: address,
             locationId:locationId
       };
       $scope.leadsForMap.push($scope.location);
       $scope.markers.push(marker);
       $scope.$apply();
}

Проверьте Когда использовать $ scope. $ Apply ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...