我正在尝试开发一个类似于Excel的表格过滤器,可以跨列应用任意数量的过滤器。
请查看我的code in plunkr。这对于过滤数据非常有效。但是我希望在更新数据时更新“过滤器”列表。我无法弄清楚如何解决这个问题。
.filter('inArray', function($filter){
return function(list, arrayFilter, element){
if(arrayFilter){
return $filter("filter")(list, function(listItem){
return arrayFilter.indexOf(listItem[element]) != -1;
});
}
};
});
例如(来自plunkr):
如果我们选择“India”,它将返回3个月2,3和7的记录。我希望月份过滤器列表显示结果(2,3,7)中的值,而不是显示所有值。
如果您需要任何进一步的信息,请与我们联系。
答案 0 :(得分:0)
好的,这是一个完整的“黑客”,我确信有更好的方法可以做到这一点,但这至少可以让你解决问题。我分叉你的Plunker并进行了一些修改。我在您的国家/地区列表中添加了ng-change
以显示或隐藏已过滤的月份:
<div class="dt-buttons btn-group">
Selected Countries:<br>
<select size="4" multiple ng-multiple="true" ng-model="selectedCountries" ng-options="country for country in countryList" ng-change="filterMonths()"></select>
</div>
<div ng-show="!countryselected" class="dt-buttons btn-group">
Selected Months:<br>
<select size="10" multiple ng-multiple="true" ng-model="selectedMonths" ng-options="month for month in monthList"></select>
</div>
<div ng-show="countryselected" class="dt-buttons btn-group">
Selected Months:<br>
<select size="10" multiple ng-multiple="true" ng-model="monthsSelected"><option ng-repeat="f in filtered">{{f.month}}</option></select>
</div>
然后在控制器中,我补充道:
$scope.countryselected = false;
$scope.filterMonths = function(){
$scope.countryselected = true;
}
如果我想到一个更好的方法,我会编辑我的答案,但这至少应该让你去。祝你好运!