角度滤波器 - 带控制器作为语法不起作用

Angular filter - with controllerAs syntax not working

本文关键字:语法 不起作用 控制器 滤波器      更新时间:2023-09-26

我在html代码中有这个:

<md-list>
  <md-list-item ng-repeat="schema in dash.filteredSchemas = (dash.items | filter: {name: dash.schemaListFilter}) | orderBy: 'schema.id'">
    <h4>{{ ::schema.name }}</h4>
  </md-list-item>
</md-list>
<div ng-show="dash.filteredSchemas.length">Empty</div>

问题是我在使用此语法时看不到任何结果 - 如果未填充过滤器,则应显示 10 个结果。

注意:没有控制台错误。更改为:

<md-list>
  <md-list-item ng-repeat="schema in dash.items | filter: {name: dash.schemaListFilter} | orderBy: 'schema.id'">
    <h4>{{ ::schema.name }}</h4>
  </md-list-item>
</md-list>
<div ng-show="dash.filteredSchemas.length">Empty</div> 
显示结果,

但(显然)在应用过滤器时不显示空消息,并且没有结果匹配。

这是怎么回事?!

如果您想获得过滤结果但又不想破坏原始数组,您可以使用'as'操作进行ng-repeat...

<md-list>
  <md-list-item ng-repeat="schema in dash.items | filter: {name: dash.schemaListFilter} | orderBy: 'schema.id' as filteredData">
    <h4>{{ ::schema.name }}</h4>
  </md-list-item>
</md-list>
<div ng-show="filteredData.length">Empty</div>

因此,每当您更改过滤器查询时,结果都将设置为"filteredData",以便您可以使用此数组属性来实现您想要的...