2017-10-23 1 views
1

私はここで何度も質問を読んだことがありますが、私と一緒にクリックしてこの問題を理解していないものがあります。

JSコード:APIの

app.controller('example_ctrl',['$scope','$http', function($scope, 
    $http){ 
    $http.get('api_call_here').then(function successCallBack(response){ 
    $scope.response = response; 
    }); 

JSON形式:

{ 
     "categoryOne": { 
     "1": { 
      "title": "someData1", 
      "description": "This is number One" 
     }, 
     "2": { 
      "title": "moreData1", 
      "description": "I am not a number, I'm a free man!" 
     } 
     } 
    } 

このhasntが配列で返されているので、私はそれをフィルタ処理しようとする時はいつでも、私はエラーを取得します。私は、検索入力にNG-モデルを投入し、でNGリピートにそれを結ぶしようとした場合

<div ng-repeat="(category, object) in response.data"> 
     <div ng-repeat="item in object"> 
     <p>{{item.title}}</p> 
     </div> 
    </div> 

は今|フィルタ:例としてNG-モデル名、私はエラーを取得します。

私が基本的にやりたいことは、検索フィールドにテキストを入力し、そのテキストを含むタイトル/説明のみを返すようにすることです。

+0

は、アプリケーション/ JSONに設定されている、あなたのAPIからの出力ヘッダをチェックする必要がありますか?それは文字列だけの場合は実際のjsonを返しません。 – mtizziani

+0

i console.logの結果が返ってくるとオブジェクトを返します。 –

+0

オブジェクトがフィルタに作用しないので、項目を配列にマップする必要があります。 – charlietfl

答えて

0

あなたは配列に各カテゴリーでのオブジェクトのリストを変換することができます。

app.controller('example_ctrl',['$scope','$http', function($scope, $http){ 
 
    $http.get('api_call_here').then(function(response) {  
 
     Object.keys(response.data).forEach(function(category) { 
 
     response.data[category] = Object.values(response.data[category]); // Transfom list of objects in each category to array 
 
    }); 
 
    console.log("transformed: ", response); 
 
    $scope.response = response; \t 
 
});

+0

これは美しく機能しました。ありがとうございます。 –

+0

オーバーヘッドを追加する代わりに、コントローラでフィルタリングを行うこともできます – charlietfl

関連する問題