Angularjs,仅显示与所选类别相关的产品

Angularjs,仅显示与所选类别相关的产品,angularjs,json,jstree,android-tabs,Angularjs,Json,Jstree,Android Tabs,我正在尝试显示selecte类别ID下的所有产品。 示例JSON文件: [{ "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

我正在尝试显示selecte类别ID下的所有产品。 示例JSON文件:

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


}]
我有如下控制器。我从json文件中读取数据。正如您在示例中看到的,我可以在控制台中显示实际的产品名称,但无法在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;  
})


})
.controller('CategoryDetailCtrl',函数($scope,product,$stateparms){
product.fetch().then(函数(数据){
$scope.dataq=数据;
对于(变量i=0;i<$scope.dataq.length;i++){
if($scope.dataq[i].product_id==$stateParams.categoryId){
$scope.data=数据;
console.log($scope.data[i].product\u name);
}  
}返回null;
})
})
Html示例如下所示:

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

{{p.product_name}}

有人能帮忙吗?

我通过编辑控制器解决了这个问题,比如

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


})
并在html端使用过滤函数,而不是在控制器中使用if

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

$scope.data=数据;这部分是错误的。我只需要分配匹配数组的值,但我不知道如何分配。