From 03293ff5cf2a9b1bd7bb15c565b7fda16701cd27 Mon Sep 17 00:00:00 2001 From: "M.Shibuya" Date: Sat, 19 Mar 2016 16:58:50 +0900 Subject: [PATCH] fix(uiSelectMultipleDirective): refresh choices upon selection change Closes #1243 --- src/uiSelectMultipleDirective.js | 1 + test/select.spec.js | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/uiSelectMultipleDirective.js b/src/uiSelectMultipleDirective.js index 5ce11d20c..75744a77e 100644 --- a/src/uiSelectMultipleDirective.js +++ b/src/uiSelectMultipleDirective.js @@ -162,6 +162,7 @@ uis.directive('uiSelectMultiple', ['uiSelectMinErr','$timeout', function(uiSelec } } $select.selected = ngModel.$viewValue; + $selectMultiple.refreshComponent(); scope.$evalAsync(); //To force $digest }; diff --git a/test/select.spec.js b/test/select.spec.js index 5bc460549..063b9fb66 100644 --- a/test/select.spec.js +++ b/test/select.spec.js @@ -2034,6 +2034,30 @@ describe('ui-select tests', function() { }); + it('should watch changes for $select.selected and refresh choices correctly', function () { + + scope.selection.selectedMultiple = ['wladimir@email.com', 'samantha@email.com']; + + var el = compileTemplate( + ' \ + {{$item.name}} <{{$item.email}}> \ + \ +
\ +
\ +
\ +
\ + ' + ); + scope.selection.selectedMultiple.splice(0, 1); // Remove Wladimir from selection + + var searchInput = el.find('.ui-select-search'); + triggerKeydown(searchInput, Key.Down); //Open dropdown + + expect(el.find('.ui-select-choices-content').text()) + .toContain("wladimir@email.com"); + + }); + it('should ensure the multiple selection limit is respected', function () { scope.selection.selectedMultiple = ['wladimir@email.com'];