我正在为动态表构建过滤器,还没有想出一种优雅的方法来告诉角度,没有设置过滤器。
假设我有一系列的复选框。如果选中一个,它将显示与该复选框值匹配的项。如果您检查两个,它将显示与其中一个或另一个匹配的项。
如果没有检查,我想显示所有的项目。
到目前为止,我只是尴尬地检查了所有的过滤器:
if(!filter.one && !filter.two && !filter.three){
return;
}
当我构建更多的过滤器时,这会变得很烦人。
我想做的是建立这样一个双重模型:
<input type="checkbox" ng-model="filter.one; filterSet"/>
这样,每个复选框不仅告诉我设置了特定的过滤器,还告诉我设置了一个过滤器--任何过滤器。
由于AngularJS不支持这一点,是否有任何简单的方法来检查是否设置了我的复选框或收音机?
发布于 2016-02-03 08:06:09
不确定是否有一种更优雅的方法来做到这一点,但我要采取的一种方法是使用id/value/其他属性列出输入对象的列表。
然后,您可以只需ng-repeat
这些复选框(或者手动将它们一次放入一个假设您知道它们在列表中的位置)。这还允许您遍历输入列表,并让循环检查它们的值(而不是冗长的if语句)。
这样,当您想要添加一个新复选框时,在列表中创建一个新对象,循环将自动为您检查它的值。看看这把小提琴:https://jsfiddle.net/ahmadabdul3/84esk49L/1/
您还可以根据每个输入对象应该执行的功能,为其提供自己的功能。而且,可能会将这些输入输入到自己的服务或工厂中。
使用与您所需要的类似的逻辑进行更新:https://jsfiddle.net/ahmadabdul3/84esk49L/2/
https://stackoverflow.com/questions/35181028
复制