簡體   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