我的應用程序使用Bootstrap 3和AngularJS。我試圖根據ng-repeat的過濾結果來計算每個州的農民市場數量。如何獲取ng-repeat上的對象屬性的項目數
我的JSON數據看起來像這樣
$scope.fmData = [
{
"MarketName": "Farm1",
"Bakedgoods" :"N",
"Cheese":"Y",
"Eggs":"N",
"latitude": 42.374858,
"longitude": -72.519422,
"state:": "New York"
},
{
"MarketName": "Farm2",
"Bakedgoods" :"N",
"Cheese":"Y",
"Eggs":"N"
"latitude": 42.5728,
"longitude": -72.1421,
"state:": "Florida"
},
{
"MarketName": "Farm3",
"Bakedgoods" :"Y",
"Cheese":"Y",
"Eggs":"N"
"latitude": 42.318,
"longitude": -71.7757,
"state:": "New York"
}
]
這是我建立了我的NG-重複使用自定義過濾器:
<div ng-repeat="farmer in fmData | myFilter:SearchFood">
我使用複選框,將過濾掉,只展示有選定食品的農貿市場。
<div class="checkbox">
<label>
<input type="checkbox" ng-model="SearchFood.Bakedgoods" />
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" ng-model="SearchFood.Cheese" />
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" ng-model="SearchFood.Eggs" />
</label>
</div>
我的自定義過濾器是這樣的:
app.filter('myFilter', function() {
return function(markets, range) {
var out = [];
angular.forEach(markets, function(Mitem, Mindex){
var flag = true;
angular.forEach(range, function(Ritem, Rindex){
if(!Ritem) return;
MitemBoolVal = (Mitem[Rindex] == "Y");
flag = ((MitemBoolVal == Ritem && flag));
});
if(flag){
out.push(Mitem);
}
});
return out;
}
});
這裏是什麼,我想實現一些例子:
默認情況下,如果烘焙食品,奶酪和雞蛋是選中,我會看到紐約有2個農貿市場,佛羅里達有1個農貿市場。
如果我查了蛋,我會看到紐約有0個農貿市場,佛羅里達有0個農貿市場。
如果我查了奶酪,我會看到紐約有2個農貿市場,佛羅里達有1個農貿市場。
如果我檢查了烘焙食品和奶酪,我會看到紐約有1個農貿市場,佛羅里達有0個農貿市場。
任何幫助將不勝感激!
非常感謝你,kamilkp。有用!! – user3314402