2014-12-02 32 views
-1

我想过滤的ID,或等级和其他各种按键的效果,我用这个数据结构:如何通过id和其他键过滤角度结果?

[ 
{ 
    "id": "1" 
    "Description": "desc 1", 
    "Rating": "rating 1", 
    "MainImage": "image.jpg" 
}, 
{ 
    "id":"1" 
    "Description": "desc 2", 
    "Rating": "rating 2", 
    "MainImage": "image.jpg" 
}, 
{ 
    "id": "2" 
    "Description": "desc 3", 
    "Rating": "rating 3", 
    "MainImage": "image.jpg" 
} 
] 

此数据从一个承诺回来,被分配到$scope.results。在模板中有一个ng-repeat来遍历结果。这是工作正常,我的问题是:

如何筛选结果id因此,例如只有id为1的结果显示?我有这个工作,但它不是最有效的。我将过滤后的结果重新分配回$scope.results,但是这样做后来整个数据结构已被包含过滤结果的数据结构取代。这显然不起作用,我做了一个工作,但我知道这不是最好的方法。

我需要一个自定义过滤器,将能够处理使用3名不同的选择列表,以便例如rating选择列表,一个productIdproductName过滤。

我到底该怎么写这个函数?

<div class="product" data-ng-repeat="product in products | filter:searchFilter"></div> 
+1

偏题:ID值应该是唯一的,无论他们的应用程序。 – isherwood 2014-12-02 20:06:26

+2

可能重复的[如何通过angularJS中的对象属性进行筛选](http://stackoverflow.com/questions/17793751/how-to-filter-by-object-property-in-angularjs) – isherwood 2014-12-02 20:07:12

+0

请参见[http:// stackoverflow.com/questions/26874748/how-to-render-only-visible-items-in-angularjs-dropdown/26874894#26874894](http://stackoverflow.com/questions/26874748/how-to-render-only - 可见光项功能于angularjs-下拉/ 26874894#26874894) – letiagoalves 2014-12-03 21:01:47

回答

-1

这就是我该怎么做的。

<input type="number" ng-modal="idFilter:selectedID"> 
<div ng-repeat="result in results | idFilter:selectedID | track by $index"> 
<something-repeated> 
</div> 

<script> 
angular.module('whatever').filter('idFilter', function(){ 
    return function(results, selectedID){ 
    return results.filter(function(result){ 
     return result.id == selectedID; 
    }); 
    } 
}); 
</script> 
0

我最终做了一些事情,我发现here并在后端创建了一个函数。例如:

$scope.searchFilter = function (item) { 
    return (item.id === $scope.results.id) 
} 

这段代码并不完全是我用过的,但这是一般的想法。似乎工作:)

0
//This will filter the product list based on all 3 criteria 
<div class="product" data-ng-repeat="product in products | filter:{rating:selectedRating, id:selectedId,productName:selectedProduct }"></div>