Slow layout calculations in Internet Explorer are often caused by large numbers of elements in the DOM, especially when using ng-repeat. To mitigate this, use the md-virtual-repeat directive.
md-virtual-repeat only adds elements to the DOM that are currently visible in the viewport and reuses elements as the user scrolls. This allows for efficient scrolling through millions of records.
Requirement: All list items must have an equal and static height for virtual repeat to function correctly.
Implementation Example:
Wrap your list in an md-virtual-repeat-container and use the md-virtual-repeat directive on the repeating item.
<md-content layout="column" ng-controller="ListCtrl">
<md-virtual-repeat-container id="vertical-container">
<md-list>
<md-list-item md-virtual-repeat="person in people"
ng-click="goToPerson(person.name, $event)">
<img alt="{{ person.name }}" ng-src="{{ person.img }}" class="md-avatar">
<p>{{ person.name }}</p>
<md-checkbox class="md-secondary" ng-model="person.selected"></md-checkbox>
<md-icon md-svg-icon="communication:email" ng-click="doSecondaryAction($event)"
aria-label="Send Email" class="md-secondary md-hue-3"></md-icon>
<md-icon class="md-secondary" ng-click="doSecondaryAction($event)" aria-label="Chat"
md-svg-icon="communication:message"></md-icon>
</md-list-item>
</md-list>
</md-virtual-repeat-container>
</md-content>