From 0e21b3bc0bb96c9e9982ebd74a4b810e02a2935f Mon Sep 17 00:00:00 2001 From: Ryan Schmukler Date: Wed, 25 Feb 2015 13:03:56 -0500 Subject: [PATCH] fix(select): fix updating of values on change and init closes #1654 --- src/components/select/select.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/components/select/select.js b/src/components/select/select.js index db2e3696ef8..14997f463fb 100755 --- a/src/components/select/select.js +++ b/src/components/select/select.js @@ -130,7 +130,7 @@ function SelectDirective($mdSelect, $mdUtil, $mdTheming, $interpolate, $compile, mdSelectCtrl.setIsPlaceholder(!text); var newText = text || attr.placeholder; var target = customLabel ? labelEl : labelEl.children().eq(0); - target.html(newText); + target.text(newText); }; mdSelectCtrl.setIsPlaceholder = function(val) { @@ -181,7 +181,6 @@ function SelectDirective($mdSelect, $mdUtil, $mdTheming, $interpolate, $compile, fakeSelectEl = $compile(fakeSelectEl)(fakeSelectScope); var fakeSelectCtrl = fakeSelectEl.controller('mdSelectMenu'); fakeSelectScope.$$postDigest(function() { - ngModel.$render(); fakeSelectEl.scope().$destroy(); }); } else { @@ -330,6 +329,13 @@ function SelectMenuDirective($parse, $mdUtil, $mdTheming) { ngModel.$render = renderSingular; } + if (self.mdSelect) { + $scope.$$postDigest(function() { + ngModel.$render(); + self.mdSelect.setLabelText(self.selectedLabels()); + }); + } + function validateArray(modelValue, viewValue) { // If a value is truthy but not an array, reject it. // If value is undefined/falsy, accept that it's an empty array. @@ -410,13 +416,11 @@ function SelectMenuDirective($parse, $mdUtil, $mdTheming) { newSelectedHashes.forEach(function(hashKey, i) { self.select(hashKey, newSelectedValues[i]); }); - self.mdSelect && self.mdSelect.setLabelText(self.selectedLabels()); } function renderSingular() { var value = self.ngModel.$viewValue || self.ngModel.$modelValue; Object.keys(self.selected).forEach(self.deselect); self.select( self.hashGetter(value), value ); - self.mdSelect && self.mdSelect.setLabelText(self.selectedLabels()); } } @@ -679,6 +683,11 @@ function SelectProvider($$interimElementProvider) { delete opts.disableTarget; } + var mdSelect = opts.selectEl.controller('mdSelect'); + if (mdSelect) { + mdSelect.setLabelText(opts.selectEl.controller('mdSelectMenu').selectedLabels()); + } + return $mdUtil.transitionEndPromise(element).then(function() { element.remove(); opts.backdrop && opts.backdrop.remove();