簡體   English   中英

ng-repeat中的angularJS過濾器表達式

[英]angularJS filter expression in ng-repeat

我想知道實現它的最優雅和簡單的方法是什么。 我需要為ng-repeat添加一個過濾表達式,它將從一個屬性中過濾掉2個條件。

在此示例中http://plnkr.co/edit/OMQxXvSjtuudMRGE4eZ8?p=preview

  • 如果輸入A,則會顯示A的復選框,
  • 輸入B - 顯示B的復選框。

但我想顯示指定的復選框以及任何條件為空的復選框。 C沒有條件,所以:

  • 如果輸入A,我想顯示A和C復選框,
  • 輸入B,我想顯示B和C復選框。

我會創建自定義過濾器,如:

app.filter('myfilter', function() {
   return function( items, condition) {
    var filtered = [];

    if(condition === undefined || condition === ''){
      return items;
    }

    angular.forEach(items, function(item) {          
       if(condition === item.condition ||  item.condition === ''){
         filtered.push(item);
       }
    });

    return filtered;
  };
});

和用法:

<span ng-repeat="charge in charges  |  myfilter:level.condition">

請參閱Plunker中的演示

它看起來非常優雅和清晰。

希望它會有所幫助

我認為只需在你的作用域上使用過濾器表達式函數就可以很容易地做到這一點;

$scope.filterExpression = function(charge) {
  return (!$scope.level || !charge.condition || 
          ($scope.level.condition.toUpperCase() === charge.condition.toUpperCase()));
}

並稱之為這樣;

<span ng-repeat="charge in charges | filter:filterExpression">

plunkr (更正)

你可以使用: data-ng-repeat =“charge in charge | filter:searchText”data-ng-if =“filter = searchText.Name”

一個接一個地使用兩個ng重復:

1st:篩選已選中復選框且具有條件的任何內容

第二:過濾沒有條件的東西

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM