diff --git a/src/nya-bootstrap-select.js b/src/nya-bootstrap-select.js index 26b9705..76f66b4 100644 --- a/src/nya-bootstrap-select.js +++ b/src/nya-bootstrap-select.js @@ -46,6 +46,8 @@ angular.module('nya.bootstrap.select',[]) angular.forEach(BS_ATTR, function(attr) { selectorOptions[attr] = attrs[attr]; }); + + return selectorOptions; }; /** @@ -78,7 +80,7 @@ angular.module('nya.bootstrap.select',[]) } }; - scope.$watch(function optionDOMWatch(){ + function optionDOMWatch(){ // check every option if has changed. var optionElements = $(element).find('option'); @@ -112,8 +114,18 @@ angular.module('nya.bootstrap.select',[]) } optionArray = makeOptionArray(optionElements); } + } - }); + scope.$watch(function(){ + // Create an object to deep inspect if anything has changed. + // This is slow, but not as slow as calling optionDOMWatch every $digest + return { + ngModel: ngCtrl.$viewValue, + options: makeOptionArray( $(element).find('option') ), + selectors: updateSelectorOptions() + }; + // If any of the above properties change, call optionDOMWatch. + }, optionDOMWatch, true); var setValue = function(modelValue) { var collection = valuesFn(scope);