2014-12-02 76 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>