【问题标题】:Angular filter - with controllerAs syntax not working角度过滤器 - 使用 controllerAs 语法不起作用
【发布时间】:2016-01-22 10:02:41
【问题描述】:

我在 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> 

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

这有什么问题?!

【问题讨论】:

  • 如何在第二个示例中设置 dash.filteredSchemas?
  • 我没有,它不工作

标签: javascript angularjs


【解决方案1】:

如果您想获得过滤结果但不想破坏原始数组,您可以使用'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',因此您可以使用此数组属性来实现您想要的...

【讨论】:

  • 谢谢,但我如何才能将过滤数据别名绑定到我的控制器?这意味着我可以在其他地方使用它,比如dash.filteredData
  • 如果你真的想在你的虚拟机别名上设置它,你可以观察它的值,因为它是范围的一个元素......
猜你喜欢
  • 2023-04-03
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
  • 2016-09-26
  • 2018-04-21
  • 1970-01-01
相关资源
最近更新 更多