范围更新后,视图未更新

时间:2015-08-24 07:31:19

标签: angularjs

                             setTimeout(function () {
                                  $scope.$apply(function () {
                                      $scope.Images = data;
                                      //$scope.$apply();
                                   });
                               }, 2000);

                               setInterval(function () {
                                   $scope.Images = data;
                                   $scope.$apply()
                               }, 500);


                               $timeout(function () {
                                   $scope.Images = data;
                               }, 500);
                           })

我在控制器中尝试了上面列出的所有选项,但是当我上传新图像时,我的视图没有得到更新。

这里$ scope.Images是数组,在图片上传后,我将获取所有图片并将所有图片分配到$ scope.Images,更新的数据即将到来,$ scope.Images也会更新但相关视图没有刷新。

视图中的行:

   <div ng-repeat="Image in Images" class="col-xs-6 col-sm-3 gallery-item">

                <a href={{Image.standard}} class="gallery-link" data-gallery>
                    <img ng-src={{Image.standard}} class="img-rounded" width="100%" height="262.22px" ng-cloak>
                </a>
            </div>

请帮助我卡住:(

1 个答案:

答案 0 :(得分:0)

考虑将$ scope变量传递给稍后运行的代码,在angular之外;例如:

setInterval(
   (function ($scope) { 
       return function(){
           $scope.Images = data;
           $scope.$apply()
       }
   })($scope), 500);

这将创建一个带参数$ scope的函数,该函数允许随时注入$ scope变量。

我知道一开始看起来很奇怪,但这种结构在这种情况下证明是有用的。