【问题标题】:How do I filter a ng-repeat by a boolean attribute in Angular.Dart?如何通过 Angular.Dart 中的布尔属性过滤 ng-repeat?
【发布时间】:2014-12-27 12:14:18
【问题描述】:

每个space 都是一个具有名为open 的布尔属性的对象,我将它们放入两个列表中。在这种情况下,我有两个,一个是true,一个是false。当列表完全呈现时,两个项目都在打开列表中。这是我尝试过的:

ng-repeat="space in ctrl.manager.spaces | filter:open"
ng-repeat="space in ctrl.manager.spaces | filter:!open"

ng-repeat="space in ctrl.manager.spaces | filter:open:true"
ng-repeat="space in ctrl.manager.spaces | filter:open:false"

ng-repeat="space in ctrl.manager.spaces | filter:{'open':true}"
ng-repeat="space in ctrl.manager.spaces | filter:{'open':false}"

{{space.open}} 确认一个是true,一个是false

【问题讨论】:

  • 我只是在我的控制器中使用谓词函数尝试了它,但问题是当值更改时列表没有重新呈现,大概是因为 Angular 不知道要观察什么(它隐藏在函数)。
  • 虽然使用我的谓词函数 {{ctrl.isOpen(space)}} 将字段渲染为测试,但更新得很好。
  • 你试过 filter:{space.open:true} 吗?
  • 这会引发异常——它需要一个冒号,而不是一个点。如果我引用space.open,它会抱怨Space 没有space 方法,但在原帖中,'open' 不起作用。
  • 过滤器:{open:true}:stackoverflow.com/questions/17655837/…

标签: dart angular-dart


【解决方案1】:

应用此过滤器的正确方法是

ng-repeat="item in items | filter: {open: 'true'}
ng-repeat="item in items | filter: {open: '!true'}

(将'true' 放在引号中)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-20
    • 2016-07-26
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 2014-05-30
    • 2016-11-02
    • 2021-05-14
    相关资源
    最近更新 更多