AngularJS-当数据推入数组时,ng-repeat和bind不更新

时间:2018-11-27 13:02:49

标签: javascript angularjs ajax

我是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] er er er er 嗨

6和7在console.log中可见,但没有触发前端更新(?)。在此项目的后面,应通过Ajax(sharepointplus)将图像信息(如url和title)加载到DOM中(但这需要花费大约5到7秒的时间)-我的第一个版本没有显示任何图像-甚至ng-repeat也由于与setTimeOut ...相同的问题而未触发

在这里我该怎么做才能使对象内容更改上的角度刷新 aka:“空数组->填充数组”?

感谢您的帮助和建议。

1 个答案:

答案 0 :(得分:1)

请这样做

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