2016-02-24 42 views
0

我有我打電話,像這樣的API:angularjs - 過濾一個JSON API和NG-重複

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端點?

當我現在運行這個應用程序,我從角陳述得到一個錯誤:Error: filter:notarray Not an arrayurl)..

我在做什麼錯誤的,這不是工作?我想要一些幫助。謝謝。

+0

什麼是data.data'的'輸出時記錄它安慰? – DataHerder

+0

@DataHerder它返回一個json對象。圖像:https://i.gyazo.com/68a284843d059f87eb830aae5583cc6b.png – Katie

+0

錯誤顯然告訴你,數據不是一個數組。 。顯示數據樣本 – charlietfl

回答

1

問題是操作的順序ng-repeat查詢

ngRepeat Docs

注:按部就班地進行,必須始終是最後一個表達式:

正在發生的事情是,過濾器是應用於$index這不是一個陣列,因此您將得到notarray錯誤

更改爲

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

謝謝,這個刪除了錯誤,但是,我仍然無法使用上面的'input'進行排序... – Katie

+0

什麼是'strict' ..它是一個變量的範圍?如果不需要布爾型 – charlietfl

+0

我使用'strict',因爲角度文檔使用'strict'來過濾。 [過濾器文檔](https://docs.angularjs.org/api/ng/filter/filter) – Katie