2016-04-14 9 views
0

Ich versuche, alle Produkte anzuzeigen, was unter der ausgewählten KategorieId. Beispiel JSON-Datei:Angularjs, nur Produkte anzeigen, die sich auf ausgewählte Kategorie beziehen

[{ 
"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" 


}] 

Ich habe Controller wie unten. Ich lese Daten aus der JSON-Datei. Wie Sie in Beispiel sehen, kann ich tatsächlichen Produktnamen in der Konsole anzeigen, aber ich kann nicht in HTML-Seite zeigen.

.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; 
}) 


}) 

Html Probe ist unten wie:

<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> 

Kann mir jemand helfen bitte?

+0

$ scope.data = Daten; dieser Teil ist falsch. Ich muss nur den Wert des übereinstimmenden Arrays mit i zuweisen, aber ich weiß nicht wie. – arslan

Antwort

0

Ich löste Problem durch die Steuerung der Bearbeitung wie

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


}) 

und gebrauchte Filterfunktion in HTML-Seite anstelle der Verwendung, wenn in der Steuerung

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