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)
In your HTML use something like:

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

```

Using ng-if will remove the element from the DOM. Using ng-show will just hide it from the DOM (using ng-hidden class).