diff --git a/src/uiSelectMultipleDirective.js b/src/uiSelectMultipleDirective.js index 10e2e3639..072eada43 100644 --- a/src/uiSelectMultipleDirective.js +++ b/src/uiSelectMultipleDirective.js @@ -162,7 +162,7 @@ uis.directive('uiSelectMultiple', ['uiSelectMinErr','$timeout', function(uiSelec if(!angular.isArray(ngModel.$viewValue)){ // Have tolerance for null or undefined values if(angular.isUndefined(ngModel.$viewValue) || ngModel.$viewValue === null){ - $select.selected = []; + ngModel.$viewValue = []; } else { throw uiSelectMinErr('multiarr', "Expected model value to be array but got '{0}'", ngModel.$viewValue); } diff --git a/test/select.spec.js b/test/select.spec.js index fbfeb8a93..8959381e5 100644 --- a/test/select.spec.js +++ b/test/select.spec.js @@ -2494,6 +2494,43 @@ describe('ui-select tests', function() { expect(el.scope().$select.items[1]).toEqual(jasmine.objectContaining({name: 'Amalie', email: 'amalie@email.com'})); }); + + it('should have tolerance for undefined values', function () { + + scope.modelValue = undefined; + + var el = compileTemplate( + ' \ + {{$item.name}} <{{$item.email}}> \ + \ +
\ +
\ +
\ +
\ + ' + ); + + expect($(el).scope().$select.selected).toEqual([]); + }); + + it('should have tolerance for null values', function () { + + scope.modelValue = null; + + var el = compileTemplate( + ' \ + {{$item.name}} <{{$item.email}}> \ + \ +
\ +
\ +
\ +
\ + ' + ); + + expect($(el).scope().$select.selected).toEqual([]); + }); + it('should allow paste tag from clipboard', function() { scope.taggingFunc = function (name) { return {