Как исправить ошибку [filter: notarray] Ожидаемый массив, но полученный json в табличном фильтре Angularjs? - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь собрать мою первую страницу AngularJS. Эта таблица считывает свои данные из $http вызова, получающего json. Итерация работает нормально, и таблица отображается, как и ожидалось, пока я не включу | filter:searchitem в ng-repeat для users. В этот момент я получаю

Ошибка: [filter: notarray] Ожидаемый массив, но полученный: {.....}

Я прочитал все вопросы, которые казались похожими, и не смог найти никого, кого бы я смог применить к этому делу. Итерация ng-repeat="user in users" работает без фильтра, поэтому users имеет правильный формат.

Это соответствующий код. Спасибо за любую помощь.

<script >
var myApp = angular.module('myApp', []);
myApp.controller('studentController', ['$scope', '$http', function($scope, $http) {
    $scope.searchitem   = '';     // set the default search/filter term
    $scope.users = [];

    //Get List   
    $http({ method: 'GET',      url: 'serve-products.php'
        }).then(function successCallback(response) { $scope.users = response.data;}, function errorCallback(response) { alert("Error. Try Again!"); });

    //Update list
    $scope.refreshUser = function(user) {    $http({    method: 'GET',
        url: 'serve-products.php?d=' + user.code
        }).then(function successCallback(response) { $scope.users = response.data;}, function errorCallback(response) { alert("Error. Try Again!"); });  };

}]);
</script>

<body class="container" ng-app="myApp" ng-controller="studentController" >

    <form>
    <div class="form-group">
      <div class="input-group">        
        <input type="text" class="form-control" placeholder="Search" ng-model="searchitem"  >
      </div>      
    </div>
    </form>

    <table class="table table-condensed table-striped">
      <thead>
        <tr>
          <td>ID</td>
          <td>Name</td>
          <td>Stock</td>
        </tr>
      </thead>
      <tbody>
        <tr ng-repeat="user in users | filter:searchitem ">
          <td> {{user.code}}   </td>
          <td> {{user.name}} </td>
          <td> <span ng-class="{'st0': user.stocktext == 'OUT OF STOCK'}"> {{user.stocktext}} </span></td>
          <td> 
              <span ng-repeat="(key,value) in user.stock">
                <span class="st{{value}}">{{key}}</span> 
              </span>
          </td>  
          <td> <button class="btn btn-primary btn-sm" ng-click="refreshUser(user)">Refresh</button> </td>
        </tr>
      </tbody> 
    </table>

  </body>
...