使用 ng-repeat 过滤 JSON API

filtering a json api with ng-repeat

本文关键字:API JSON 过滤 ng-repeat 使用      更新时间:2023-09-26

我有一个 api 像这样调用:

app.controller('AppCtrl', function($scope, $http) {
$http({
  method: 'GET',
  url: 'http://localhost:4000/people',
  headers: {
    'Accept' : "application/json; charset=utf-8"  
},
}).then(function successCallback(data) {
     $scope.camps = data.data;
  }, function errorCallback(data) {
        console.log(data);
   });
});

我正在做一个带有指令的ng-repeat,以循环数据并输出变量:

<div ng-repeat="camp in camps track by $index | filter:search:strict">
     <tile></tile>
</div>

我希望能够过滤<tile>,所以我有一个看起来像这样的input

<md-input-container class="md-block">
    <label>Person name</label>
    <input ng-model="search.name">
</md-input-container>

tile 指令中,我有一个部分看起来像这样:

<div class="variation-text col-md-8">
    <h3 class="problem-header grey-header">{{ camp.name }}</h3>
 </div>

这是从 API 输出name端点。如何使用上面显示的input字段筛选此name终结点?

当我当前运行此应用程序时,我从 Angular 收到一个错误,指出:Error: filter:notarray Not an array(url)。

我做错了什么,这行不通?我希望得到一些帮助。谢谢。

问题是ng-repeat查询中的操作顺序

来自ngRepeat Docs:

注意:跟踪依据必须始终是最后一个表达式:

正在发生的事情是过滤器正在应用于不是数组$index因此您得到notarray错误

更改为

<div ng-repeat="camp in camps | filter:search:strict  track by $index">