为什么ng-repeate对象没有得到更新?

时间:2016-11-15 10:11:34

标签: angularjs angularjs-scope angularjs-ng-repeat

这是从服务器加载列表的功能。最初会显示列表,但在应用过滤器时获得空响应时,它仍会显示以前的结果,而不会清除以前的列表。

 $scope.browseListing = function (strURL) {
        $scope.CurrentTab = strURL;
        $scope.getURL(strURL);
        $http.post($scope.URL)
                .then(function (response) {
                    if (response.data != 'null') {
                        $scope.Data = response.data;
                        $scope.TotalListingCount = $scope.Data.length;                                            
                        $window.alert('Result is not null');
                    }
                    else {
                        $scope.TotalListingCount = '0';
                        $window.alert('Result is null');
                        $scope.Data = [];
                    }
                }, function (response) {
                    $log.info(response);
                });
    };

被修改

enter image description here

如何解决此问题,以便在空的回复中清除以前的列表并显示没有列表?

2 个答案:

答案 0 :(得分:1)

可能是您的范围未更新。请尝试以下方法(这不是100%好方法,但此时你可以解决你的问题)

 if(!$scope.$$phase) {
  $scope.$apply(
         $scope.Data = [];
       );
  }    
   $scope.TotalListingCount = '0';
   $window.alert('Result is null');
  • 请检查您的控制台是否有任何错误。

更新 尝试这样的另一种方式(全局声明空对象)

    .then(function (response) {
                            $scope.TotalListingCount = '0';
                            $scope.Data = [];
                        if (response.data != 'null') {
                            $scope.Data = response.data;
                         $scope.TotalListingCount = $scope.Data.length;                                             
                            $window.alert('Result is not null');
                        }
                        else {
                                $window.alert('Result is null');
                              }
                    }
  

它运行不正常,请分享您的过滤器代码。 Bcs问题应该在那里。

答案 1 :(得分:0)

以下内容创建新范围,并继承原型:ng-repeatng-includeng-switchng-viewng-controllerdirective和{ {1}},scope: truedirective

因此,请将transclude: true$parent ng-repeat`一起使用 -

'ng-repeate' to reference to parent scope instead of using newly created scope by

<tr ng-repeat="listing in $parent.Data | orderBy : sortColumn : SortDirection">中的$parent添加到ng-repeat中的范围属性后,根据更改更新UI

Here is full description of scope