This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Description
In the select directive there is a deep watch that calls $render if $viewValue deep-changes. This happens either if it changes inside or if it's reference changed.
It should only call $render in the first cases.
If the reference of $viewValue changes than this call is redundant because the shallow watch in ngModel will call $render.
I suggest something like:
var lastView, lastViewRef = NaN;
scope.$watch(fucntion() {
if (lastViewRef === ngModelCtrl.$viewValue and !equals(lastView, ngModelCtrl.$viewValue)) {
lastView = shallowCopy(modelCtrl.$viewValue);
modelCtrl.$render();
}
lastViewRef = ngModelCtrl.$viewValue;
})
Edit: Here is a plunker that show the issue
http://plnkr.co/edit/dWpTKH?p=preview