2016-08-30 10 views
0

私は自分のリストにいくつかのアラームデータを持っています。同じ場所にpull_Alarmとemergency_alarmという複数のアラームがある場合のようにいくつかの条件に基づいてフィルタリングしたい緊急警報。複数の条件のデータをフィルタリングする方法

Here is my list: 
[ 
    { 
     alarmType:"Normal_ALARM" 
     location:"Ward5" 
     severity:"URGENT" 
    }, 
    { 
     alarmType:"Emergency_Alarm 
     location:"Ward1" 
     severity:"URGENT" 
    }, 
    { 
     alarmType:"PULL_Alarm" 
     location:"Ward1" 
     severity:"NORMAL" 
    } 
] 

私はフィルタ後のリストがあるべき欲しいだけ

[ 
    { 
    alarmType:"Normal_ALARM" 
    location:"Ward5" 
    severity:"URGENT" 
    }, 
    { 
    alarmType:"Emergency_Alarm 
    location:"Ward1" 
    severity:"URGENT" 
    } 
] 

誰かが、私はこれらの条件にフィルタを適用することができますどのように私を提案することができます。

+1

私はこの内部コントローラをフィルタリングするのではなく、HTML内のレコードをフィルタするために使用することができますどのようhttp://stackoverflow.com/questions/18792039/angularjs-multiple-filter-with-custom-filter-function –

答えて

0

スイッチケースを使用して1つのフィルタを作成するか、その他の条件を追加します。

.filter("alarmFilter", function() { 
    // write condition what ever you want to add 
}); 

条件を適用する式にこのフィルタを適用します。

0

書き込みフィルタ

$scope.filter1 = function(item) 
    { 
     return (item.severity == 'URGENT'); 
    }; 

、その後

<div ng-repeat="item in object| filter:filter1">{{item.alarmType}}</div> 

JSFIDDLEhttp://jsfiddle.net/Lvc0u55v/8866/

+0

の可能性の重複? –

+0

あなたはこのようにすることができますhttp://jsfiddle.net/Lvc0u55v/8871/ – COSTADOR

0

それを使用するあなたは以下のように、カスタムフィルタを作成することができます。

<ul> 
    <li ng-repeat="alarm in list | byAlarmCount:severityFilter">{{alarm.location}: {{alarm.alarmType}}</li> 
</ul> 
0

以下のように

angular.module('myFilters', []). 
filter('byAlarmCount', function() { 
    return function(alarms, severity) { 
    var items = { 
     severity: severity, 
     out = [] 
    }; 
    angular.forEach(alarms, function(v, k)) { 
     if (this.severity[v.severity] === true) { 
      this.out.push(v); 
     } 
     } 
    return items.out; 
    } 
}); 

DOMは、あなたがしてlodash(https://lodash.com/)またはアンダースコア(http://underscorejs.org/)のようないくつかのサードパーティのJSライブラリを見て、その優れたいくつかの複雑なフィルタリングを行うために探している場合。

これらは、フィルタリング、マッピング、その他の一般的なユーティリティ機能に使用できる幅広いユーティリティを提供します。

たとえば、現在のシナリオでは、アンダースコアの_.where/_.filterを使用できます。

var filteredAlarms = _.where(<YOUR LIST>, { severity: NORMAL, alarmType: ...}); 
+0

あなたのコントローラの中で_.where(...)を使用することができます、あなたはすでに注入されたunderscore.jsファイルが必要です。これをサービスとして作ってコントローラの中でうまく動作するようにする方法があります。私のお気に入りのものはhttps://solidfoundationwebdev.com/blog/posts/how-to-use-underscore-in-your-angularjsです - コントローラ – M22an

関連する問題