【问题标题】:Can angular filter an array by properties that don't exist?可以按不存在的属性对数组进行角度过滤吗?
【发布时间】:2014-12-17 03:20:35
【问题描述】:

我正在尝试通过属性scenarioVid 过滤对象数组。如果该属性为 false 或未定义,我想将其包含在列表中。如果属性为真,我想排除它。

我有这个:

<li ng-repeat="script in content.activeContent.scripts | filter:{scenarioVid:false}

但在我的对象数组中,scenarioVid 不存在,除非它是真的。否则它不存在于对象中。

我的列表中没有任何内容。

如果我要删除这个过滤器,我会得到所有scripts,这是我不想要的,因为它没有被过滤。

因此,当我尝试按不存在的属性进行过滤时,它不会评估为 false?该属性是否需要存在并改为false

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    这可以通过ng-show来完成

    <li ng-repeat="script in content.activeContent.scripts" ng-show="!script.scenarioVid"
    

    【讨论】:

    • ng-if 如果您想实际删除元素而不是仅仅隐藏它。
    • 错误答案。问题是“如何在迭代之前过滤列表”,而不是“如何隐藏不必要的列表项”。例如,如果您需要正确的 $index,您将如何处理您的解决方案?
    • 你是对的:如果我们使用 Angular 的 filter$index 会有所不同。在简单的场景中 - 就像这里的场景 - ng-show / ng-if 将完成同样的事情。
    猜你喜欢
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多