2017-05-16 4 views
0

に基づいてJSONオブジェクトを取得し、私が持っているこのカテゴリ

angular 
    .module('app') 
    .factory('ItemFactory', ['$http', function($http) 
     { 
      return { 
       get: function() { 
       return $http.get('scripts/item.json').then(function(response) { 
        return response.data; 
       }); 
       } 
      }; 
     } 
    ]); 

コントローラのようなこの

[ 
    { 
    "id":1, 
    "name": "BMW E46 PANDEM", 
    "price": 130000, 
    "curency":"USD", 
    "color":"white", 
    "category":"car" 
    }, 
    { 
    "id":2, 
    "name": "Yamaha", 
    "price": 2000, 
    "curency":"USD", 
    "color":"white", 
    "category":"Bike", 
    }, 
    { 
    "id":3, 
    "name": "Nissan GTR R34", 
    "price": 130000, 
    "curency":"USD", 
    "color":"black", 
    "category":"car" 
    } 
] 

工場のようなJSON

angular 
    .module('app') 
    .controller('apparelCtrl',['$scope','ItemFactory', function($scope,ItemFactory){ 
      $scope.title='car'; 
      ItemFactory.get().then(function(data) { 
       $scope.apparelItems = data; 
      }); 
      $scope.apparelItems=ItemFactory.get(); 
      console.log($scope.apparelItems); 
     }]); 

directive.js

angular 
    .module('app.directives.gridViewApparel',[]) 
    .directive('gridApparel',function() 
    { 
     return{ 
      restrict:'E', 
      scope:{ 
       data: '=' 
      }, 
      transclude:true, 
      replace:true, 
      templateUrl:"templates/directives/gridViewApparel.html", 
      controller:function($scope){ 
       console.log($scope.data); 
      } 
     }; 
    } 
); 

diirective.html

<div> 
    <div class="col-sm-4 ApparelThumbnail"> 
     <p class="title">{{data.name}}</p> 
     <p>{{data.price}}{{curency}}</p> 
     <a href="#/Apparel/{{data.id}}" class="btn btn-primary">detail</a> 
    </div> 
</div> 

私car.html

<div class="container"> 
    <h1>{{title}}</h1> 
    <div ng-repeat="carlItem in carItems | filter: {category:'car'}" class=""> 
     <grid-view-apparel data="carlItem"></grid-view-apparel> 
    </div> 
</div> 

私car.htmlとbike.html両方は私が前にインデックスでトラックを追加しようと、エラー

angular.js:14525 Error: [filter:notarray] 

を得ましたフィルタを適用しても同じエラーが発生します。 カテゴリ男に基づいてjsonからオブジェクトを取得するには? ありがとうございます

+0

エラーはおそらく 'グリッドビューapparel'によって引き起こされます。おそらく、あなたが使っている 'grid-view-apparel'というディレクティブについて少し説明することができます。 – Pengyy

+0

@Pengyyはい私のコード – GerryofTrivia

+0

も ​​'gridViewApparel.html'のポストコードを更新します。 – Pengyy

答えて

0

次のコードは意味をなさないものです。あなたは以前から$scope.apparelItems = data;をオーバーライドしているよう

ItemFactory.get().then(function(data) { 
    $scope.apparelItems = data; 
}); 
$scope.apparelItems=ItemFactory.get(); 

は、あなたのコードから $scope.apparelItems=ItemFactory.get();を削除し、これ $scope.apparelItemsはないという約束の結果に、約束に等しいです。

0

返品に問題があります。あなたの返却がrepnse.dataであるか、約束しているかを分析します。 $ httpの応答を理解する。 Processing $http response in service

0

Phil

HESコードのおかげで問題を解決する、

彼は$scope.apparelItems=ItemFactory.get();を削除するために私を提案し、現在その修正