For example if I do this with 2500 docs. It takes a while to render and slows the page down.
<tr ng-repeat="doc in allDocs">We can see and measure this performance using chromes flame chart in the javascript cpu profiler.
<td><a ng-href="{{ "{{" }}doc.url}}">{{ "{{" }}doc.title}}</a></td>
<td>{{ "{{" }}doc.description}}</td>
</tr>
There are a bunch of angular.js digest cycles and stuff happening. One of the things thats slow is that angular is internally creating a watcher for each of the data bindings in the template.
The data binding and watching is whats great about angular.js but I dont need that here. Alternatively we can use a Mustache template and insert the elements manually with javascript. This performs alot better.
var template = document.getElementById('results-template').text;
var rendered = Mustache.render(template, docs);
$('#results-table').append(rendered);
<script id="results-template" type="text/html">
<tr>
<th>Name</th>
<th>Description</th>
</tr>
{{ "{{" }}#docs}}
<tr>
<td><a href="{{ "{{" }}fields.url}}">{{ "{{" }}fields.title}}</a></td>
<td>{{ "{{" }}fields.description}}</td>
</tr>
{{ "{{" }}/docs}}
</script>