我是angularjs
的新用户,我正在尝试过滤由数组填充的表格。
在表格中:ng-repeat="item in exampleArray | filter: query"
query
由两个选项组成:
<select ng-model="query.alpha" ng-options="item for item in alphas">
<option value="">All</option>
</select>
<select ng-model="query.bravo" ng-options="item for item in bravos">
<option value="">All</option>
</select>
这一切都很好,除了每个选择中的初始option
,意味着选择不应该过滤数组。
看起来这可能是null
而不是undefined
。我知道以下重置过滤器的方法:$scope.query = {};
但这会重置每个过滤器,而不只是一个。
如何在不重置整个过滤器的情况下从一个选择中删除过滤器?
答案 0 :(得分:1)
过滤器需要了解query.alpha
和query.bravo
。
请看一下:
<tbody>
<tr ng-repeat="item in items = (exampleArray | filter: query.alpha | filter: query.bravo)">
<td>{{item.alpha}}</td>
<td>{{item.bravo}}</td>
<td>{{item.charlie}}</td>
</tr>
</tbody>
完整代码可在以下网址获得:
希望它有所帮助。
感谢。
答案 1 :(得分:1)
这确实是一个PITA,现在可能有更好的解决方案,
我调整了你的小提琴,向你展示了两种方法来处理这个问题。我也不喜欢,但他们完成了工作。
这是第一种方式:
ng-change='query.bravo = query.bravo ? query.bravo : ""'
将该指令添加到您的模板,准确地添加到<select>
。
这是第二种方式,这是使用手表,因为它比以前的方式更加偏好。
$scope.$watch('query.alpha',function (newVal) {
if (newVal === null) {
$scope.query.alpha="";
}
});
行动中:http://jsfiddle.net/SanderElias/5sdfzev5/
我希望这对你有所帮助。