我不知道如何编写这个过滤器表达式。
我有一系列文件:
[{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的文档。我不知道如何优雅地编写这个过滤器表达式。
答案 0 :(得分:0)
根据您的逻辑,您不需要过滤器,您可以使用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>
答案 1 :(得分:0)
可以仅在模板中执行此操作。这是一个例子:
<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
指令可以解决这个问题。如果未选中复选框,则模型filterRead.read
将设置为不等于read
true或false的值。因此,结果将呈现所有记录。