簡體   English   中英

從ng-repeat中刪除元素,但將其HTML保留在dom中

[英]Remove element from ng-repeat but, keep its HTML in dom

我有一個數組badge = [{'name':'abc', 'flag': true}, {'name':'cde', 'flag': false}, {'name':'def', 'flag': true} ]

ng-repeat一起使用,並且dom是在瀏覽器上創建的。 現在,我需要從數組中刪除標記為false元素,但是要保持HTML(由ng-repeat創建)在瀏覽器中的作用。

使用filter

 angular.module('myApp', []); function HelloCntl($scope) { $scope.badge = [{ 'name': 'abc', 'flag': true }, { 'name': 'cde', 'flag': false }, { 'name': 'def', 'flag': true }] } 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script> <div ng:app="myApp"> <div ng-controller="HelloCntl"> <ul> <li ng-repeat="b in badge | filter:{flag:true}"> <span>{{b.name}}</span> <span>{{b.flag}}</span> </li> </ul> </div> </div> 

使用一次綁定。 這樣,當您更改模型時,DOM將不會在第一次加載后再次反映出來。

<ul>
      <li ng-repeat="b in ::badge">
        <span>{{b.name}}</span>
        <span>{{b.flag}}</span>
      </li>
</ul>

要禁用刪除的內容,請使用具有常規雙向綁定的ng-class

對於一次性綁定,請使用google或參閱嵌套在一次懶惰的ng-repeat綁定內的綁定是否僅綁定一次?

在您的HTML中使用類似:

<ul ng-repeat="(key,value) in badge">
  <li ng-show="value.flag">{{value.name}}</li>
</ul>

使用ng-if會將元素從DOM中刪除。 使用ng-show只會將其從DOM中隱藏(使用ng-hidden類)。

您可以將兩個ng-repeats相鄰放置,並讓第二個ng-repeat最初為空,而第一個為空白。 然后,您可以從第一個數組中刪除它,然后將其放入第二個數組中。

這樣,您可以刪除元素,但仍將其保留在DOM中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM