2016-11-15 4 views
1

Это функция, которая загружает списки с сервера. Первоначально отображаются списки, но при получении нулевого ответа при применении фильтра он по-прежнему показывает предыдущий результат и не очищает предыдущие списки.Почему объект 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

Как решить эту проблему, так что на пустой ответ предыдущие списки очищается и не показывает списки?

+0

обновления вашей соответствующая данные HTML разметка и JSON, извлекаемая с сервера – Aravind

+0

@Aravind, мне нужно, чтобы показать/скрыть нг-repeate в соответствии с ответа? – JMD

+1

Вы получаете предупреждение «Результат является нулевым», когда нет данных? –

ответ

1

Возможно, ваш объем не обновляется. Пожалуйста, попробуйте это ниже (это не 100% хороший подход, но в это время вы можете решить вашу проблему)

if(!$scope.$$phase) { 
    $scope.$apply(
     $scope.Data = []; 
     ); 
    }  
    $scope.TotalListingCount = '0'; 
    $window.alert('Result is null'); 
  • и, пожалуйста, проверьте вашу консоль, имеющие какую-либо ошибку.

Update: попробовать другой способ, как это (объявить пустой объект глобально)

.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'); 
           } 
        } 

It's does not works well, then please share your filter code. Bcs the problem should be there.

+0

Ошибка в консоли, 'Ошибка: $ rootScope: inprog Действие уже выполнено. – JMD

+0

Удалите кеш. – stormec56

+0

@ stormec56, очищенный кеш все еще не работает ... – JMD

0

Следующие создавать новые области, и наследуют прототипический: ng-repeat, ng-include, ng-switch, ng-view, ng-controller, directive с scope: true, directive с transclude: true.

Таким образом, использовать $parent с 'ng-repeate' to reference to parent scope instead of using newly created scope by нг-repeat` как-

<tr ng-repeat="listing in $parent.Data | orderBy : sortColumn : SortDirection">

После добавления $parent в ng-repeat к области видимости собственности в UI он обновляет UI в соответствии с изменениями.

Here is full description of scope