AngularJS:判断没有(各种类型的)输入是否为真的最简单方法

AngularJS: Easiest way to tell if no inputs (of various types) are true

本文关键字:是否 输入 真的 方法 最简单 类型 判断 种类 AngularJS      更新时间:2023-09-26

我正在为动态表构建过滤器,还没有想出一种优雅的方式来告诉 Angular 没有设置过滤器。

假设我有一系列复选框。如果选中一个,它将显示与该复选框值匹配的项目。如果选中两个,它会显示与其中一个匹配的项目。

如果未选中任何项目,我想显示所有项目。

到目前为止,我只是笨拙地检查所有过滤器:

if(!filter.one && !filter.two && !filter.three){
    return;
}

当我构建更多过滤器时,这变得很烦人。

我想做的是设置一个这样的双重模型:

<input type="checkbox" ng-model="filter.one; filterSet"/>

这样,每个复选框不仅告诉我设置了特定的过滤器,还告诉我设置了一个过滤器 - 任何过滤器。

由于 AngularJS 不支持此功能,是否有任何简单的方法来检查我的任何复选框或收音机是否已设置?

不确定是否有更优雅的方法可以做到这一点,但我会采取的一种方法是使用id/值/其他属性列出输入对象。

然后,您可以ng-repeat这些复选框(或者假设您知道它们在列表中的位置,则一次手动将它们放入一个复选框)。这也将允许您循环访问输入列表并让循环检查其值(而不是 long if 语句)。

这样,当您要添加新复选框时,请在列表中创建一个新对象,循环将自动为您检查其值。看看这个小提琴:https://jsfiddle.net/ahmadabdul3/84esk49L/1/

您还可以为每个输入对象指定自己的函数,具体取决于它应执行的功能。此外,可能将这些输入放入自己的服务或工厂中。


使用与您需要的逻辑类似的逻辑更新了小提琴:https://jsfiddle.net/ahmadabdul3/84esk49L/2/