AngularJS - ng-repeat & bind не обновляется, когда данные помещаются в массив - PullRequest
0 голосов
/ 27 ноября 2018

Я новичок в angularjs, я уже читал, что с помощью ng-bind вы должны вызвать $ scope.apply (), чтобы обновить вывод, когда изменился массив источника данных.Но я также читал, что он должен работать как шарм и из коробки, когда вы используете ng-repeat .В следующей ситуации отображаются не все элементы на странице:

<body ng-app="gallery">
  <div ng-controller="GalleryController">
      {{imageFolder}}
      <div class="uk-child-width-1-5 uk-grid-small" uk-grid>
          <div ng-repeat="image in imageFolder">
              hier
          </div>
      </div>
  </div>
</body>

И JS:

let gallery = angular.module('gallery', []);

        gallery.controller('GalleryController', function($scope) {

            $scope.imageFolder = [1,2];

            setTimeout(function(){
                console.log($scope);
                $scope.imageFolder.push(6,7);
                console.log($scope); 
                console.log($scope.imageFolder)
            },1000);

             $scope.imageFolder.push(3,4,5);
             console.log($scope);
});

, а в интерфейсе мы видим:

[1,2,3,4,5] hier hier hier hier

6 и 7 видны в console.log, но обновление внешнего интерфейса не инициируется (?).Позже в этом проекте информация об изображении, такая как url ​​и title, должна быть загружена в DOM через Ajax (sharepointplus) (но это займет около 5-7 секунд) - Моя первая версия не показала никаких изображений - даже ng-repeat былоне вызывается из-за той же проблемы, вызванной setTimeOut ...

что я могу сделать здесь, чтобы позволить угловое обновление при изменении содержимого объекта aka: "пустой массив -> заполненный массив"?

спасибо за вашу помощь и предложения.

1 Ответ

0 голосов
/ 27 ноября 2018

Пожалуйста, сделайте так

        setTimeout(function(){
            console.log($scope);
            $scope.imageFolder.push(6,7);
            console.log($scope); 
            console.log($scope.imageFolder);
            $scope.$apply();
        },1000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...