繁体   English   中英

AngularJS ng-repeat和切换过滤器开/关?

[英]AngularJS ng-repeat and toggle filter on/off?

我不知道如何编写此过滤器表达式。

我有一系列文件:

[{title: 'doc1', read: false}
{title: 'doc2', read: false}
{title: 'doc3', read: false}
{title: 'doc4', read: true}
{title: 'doc5', read: false}]

我认为

<input type="checkbox" ng-model="filterRead">
<div ng-repeat="doc in documents track by $index | filter: ??? ">
   {{doc.title}}
</div>

如果checkbox / filterRead为true,则不分配任何过滤器并显示所有文档。 如果复选框为false,则仅在doc.read = false的地方显示文档。 我不知道如何优雅地编写此过滤器表达式。

根据您的逻辑,您不需要过滤器,可以使用ng-if:

控制器:(或者如果您想直接在HTML中使用逻辑)

$scope.showDoc = function () {
    return $scope.filterRead || !doc.read;
}

和HTML:

<div ng-repeat="doc in documents track by $index" ng-if="showDoc()">
   {{doc.title}}
</div>

只能在模板中执行此操作。 这是一个例子:

<input type="checkbox" ng-model="filterRead.read" ng-true-value="false" ng-false-value="'!null'">
<div ng-repeat="doc in documents | filter:filterRead track by $index ">
    {{doc.title}}
</div>

ngFalseValue指令在这里ngFalseValue了作用。 当复选框未选择模型filterRead.read设置为一些东西,不等于这两个read真或假。 因此,所有记录均被呈现。

演示: http //plnkr.co/edit/GO9vAZI3ghZuFb2eqa6h?p = preview

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM