2016-04-14 4 views
0

J'essaie d'afficher tous les produits sous la catégorie choisieId. Exemple de fichier JSON:Angularjs, afficher uniquement les produits relatifs à la catégorie sélectionnée

[{ 
"product_id":"1", 
"product_name":"Name of the book 1", 
"product_image":"image Url 1", 
"category_id":"1" 
}, 
{ 
"product_id":"2", 
"product_name":"Name of the book 2", 
"product_image":"image Url 2", 
"category_id":"2" 
}, 
{ 
"product_id":"3", 
"product_name":"Name of the book 3", 
"product_image":"image Url 3", 
"category_id":"3" 


}] 

J'ai contrôleur comme ci-dessous. Je lis les données du fichier json. Comme vous le voyez dans l'exemple, je peux afficher le nom du produit réel dans la console, mais je ne suis pas en mesure de montrer dans la page html.

.controller('CategoryDetailCtrl', function($scope, product,$stateParams) { 
product.fetch().then(function(data) { 
    $scope.dataq=data; 
     for (var i=0; i < $scope.dataq.length; i++){ 
      if ($scope.dataq[i].product_id == $stateParams.categoryId){ 
       $scope.data=data; 
       console.log($scope.data[i].product_name); 
      } 
     } return null; 
}) 


}) 

échantillon Html est comme ci-dessous:

<ion-item class="item-remove-animate item-avatar item-icon-right" ng-repeat="p in data" type="item-text-wrap"> 
    <h2>{{p.product_name}}</h2>  
    </ion-item> 

Can s'il vous plaît aider quelqu'un?

+0

$ scope.data = données; cette partie est fausse. Je dois assigner seulement la valeur du tableau assorti avec je mais je ne sais pas comment. – arslan

Répondre

0

Je résolus problème par le contrôleur comme l'édition

.controller('CategoryDetailCtrl', function($scope, product,$stateParams) { 
product.fetch().then(function(data) { 
    $scope.data=data; 
    $scope.catId=$stateParams.categoryId; 


}) 

et la fonction de filtre utilisé dans le côté html au lieu d'utiliser si dans le contrôleur

ng-repeat="p in data | filter: {category_id: catId}"