2017-06-14 10 views
1

私はいくつかの角度コードを使用していますが、うまくいきなりリファクタリングしていきます。
チェックボックスに基づいてng-repeatに基づいてフィルタリングしようとしています。ng-repeat with filter

{ 
    name: 'mail', 
    rating: 2.4, 
    source: 'EDD', 
    users: 1000, 
    description: '' 
} 

ng-repeat作業が

<li ng-repeat="rule in property">{{rule[entityPropertyName]}</li> 

を反復処理するように設定されている

私はそうのように見えるデータツリーを持っている...プロパティが存在する製品サービスのオフに改名されましたsearchControllerのように

<search-section productName="qualifier" 
       product="qualifiers" 
       entityPropertyName="name"></search-section> 

指令

controller: 'searchController', 
scope: { 
    product: '=', 
    productName: '@', 
    entityPropertyName: '@' 
}, 

私はソース名が元返され

$scope.filterAdded = function(sourceName) { 
    if($scope.filteredQualifiers.sourceName[sourceName]) { 
     return sourceName; 
    } 
} // returns source name 

コントローラにシンプルな機能でチェックボックスを通して濾過しています:メディア、または年齢を

私はこのフィルタはそう

scope: { 
    entities: '=', 
    entityName: '@', 
    entityPropertyName: '@', 
    filterAdded: '&' 
}, 

filterAddedと同じように指令から支持されるので、

<li ng-repeat="rule in property | filter: filterAdded">{{rule[entityPropertyName]}</li> 

ようng-repeatイテレータに

$scope.filterAdded 

を追加することができることを期待していました機能として見なされます。フィルタ付き

は私がその私がルールソースからフィルタリングする必要があると特定され

EDDのような単一の値を返す追加しました。

source: 'EDD' 

は私がrule.sourceとfilterAdded値を取得し比較することができやり方を見ていません。

<li ng-repeat="rule in property | filter: filterAdded"></li> 

洞察力やフィードバックに感謝します。

答えて

-1

私はAngular 4ですので、この言語を使用しますが、角度j(1.x)に合わせることができます。

もし私が正しいとすれば、パイプを使用する代わりにngForまたはngRepeatをngIfで使用します。

<ul *ngFor=" let rule in property"> 

* ngForはliではなくulで使用されることに注意してください。

次に、liタグで、ngIfを使用して特定のフィルタの下にあるかどうかを確認します。 ngIf上では機能的に結合しさえ、あなたは以下のように反復され、配列のオブジェクトやアイテムのプロパティを渡すことができます

<li *ngIf="isThisOnFilter(rule['rating'])">{{ rule['name'] }}</li> 

はそれがお役に立てば幸いです。