Question: I have an array `badge = [{'name':'abc', 'flag': true}, {'name':'cde', 'flag': false}, {'name':'def', 'flag': true} ]`

used it with `ng-repeat` and dom is created on browser. Now i need to delete element having flag `false` from array but, keep the HTML (created by ng-repeat) entact in browser.

Answer: 
Use one time binding. So that when you change model then DOM will not be reflected again after first time load.

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

```

For disabling the deleted things, use **`ng-class`** with normal two way binding.

For one time binding please google, or refer [Do bindings nested inside of a lazy one-time ng-repeat binding bind just once?](https://stackoverflow.com/questions/23903389/do-bindings-nested-inside-of-a-lazy-one-time-ng-repeat-binding-bind-just-once)
You could put two ng-repeats next to each other and have the second one initially empty and your first one as you show it. Then you can delete it from the first array and put it in the second one. 

This way you can remove the element, but still keep it in the DOM.