Javascript 需要帮助了解如何使用过滤器吗

Javascript 需要帮助了解如何使用过滤器吗,javascript,html,angularjs,Javascript,Html,Angularjs,我想弄清楚这行ng重复代码在做什么 <div ng-repeat="user in filtered = (main.users | candidate: main.filterBy)"> 我知道下面这行将为main.users中的所有用户创建一个div <div ng-repeat="user in main.users"> 第一个例子在做什么?我假设有一些过滤器正在运行,但它与我在angular文档中看到的任何过滤器示例的语法都不相似基本上,上面的语法通过

我想弄清楚这行ng重复代码在做什么

<div ng-repeat="user in filtered = (main.users | candidate: main.filterBy)">

我知道下面这行将为main.users中的所有用户创建一个div

<div ng-repeat="user in main.users">


第一个例子在做什么?我假设有一些过滤器正在运行,但它与我在angular文档中看到的任何过滤器示例的语法都不相似

基本上,上面的语法通过
main.users
by
candidate
过滤,通过使用此行
main.users>candidate:main.filterBy)将
main.filterBy
值传递给该过滤器
,其结果存储在
过滤的
变量中。因此,每次当digest cycle启动时,您都会看到
filtered
值更新

这里有官方的重构和语义语法

<div ng-repeat="user in main.users | candidate: main.filterBy as filtered">

这清楚地表明,可以在
filtered
scope变量中使用筛选结果,该变量用作该输出的别名


我不知道为什么编写代码的人添加了“filtered=”。这是不必要的,可能会破坏代码。看起来有一个名为“候选者”的自定义过滤器,它以某种方式基于main.filterBy进行过滤。这可以通过使用filterFilter来加强。在我的template.html的其余部分中,我没有看到filtered在其他地方被使用,因此它没有必要吗?我在我的控制器或视图中没有看到任何其他筛选范围变量,因此我是否可以将其简化为这是我将尝试的第一件事:)在我的template.html的其余部分中,我没有看到其他地方使用筛选范围变量,因此它是否不必要?我看到在你的Plunk中,你确实使用了带有ng if=“results.length==0”的as结果,但我在我的控制器或视图中没有看到任何其他过滤范围变量,所以我可以把它简化为是的…如果它没有在其他任何地方使用,那么你应该删除该部分..但是是的,如果你想显示过滤列表计数,那么这个东西可以帮助你。。