@@ -108,13 +108,6 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
108108
109109 $scope . singleSelection = $scope . settings . selectionLimit === 1 ;
110110
111- if ( $scope . singleSelection )
112- {
113- if ( angular . isArray ( $scope . selectedModel ) && $scope . selectedModel . length === 0 )
114- {
115- $scope . selectedModel = null ;
116- }
117- }
118111
119112 function getFindObj ( id )
120113 {
@@ -131,6 +124,21 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
131124 return findObj ;
132125 }
133126
127+ function clearObject ( object )
128+ {
129+ for ( var prop in object ) {
130+ delete object [ prop ] ;
131+ }
132+ }
133+
134+ if ( $scope . singleSelection )
135+ {
136+ if ( angular . isArray ( $scope . selectedModel ) && $scope . selectedModel . length === 0 )
137+ {
138+ clearObject ( $scope . selectedModel ) ;
139+ }
140+ }
141+
134142 if ( $scope . settings . closeOnBlur ) {
135143 $document . on ( 'click' , function ( e ) {
136144 var target = e . target . parentElement ;
@@ -169,7 +177,7 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
169177
170178 if ( $scope . singleSelection )
171179 {
172- totalSelected = $scope . selectedModel !== null ? 1 : 0 ;
180+ totalSelected = ( $scope . selectedModel !== null && angular . isDefined ( $scope . selectedModel [ $scope . settings . idProp ] ) ) ? 1 : 0 ;
173181 }
174182 else
175183 {
@@ -218,12 +226,11 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
218226 }
219227
220228 if ( $scope . singleSelection ) {
221- $scope . selectedModel = null ;
229+ clearObject ( $scope . selectedModel ) ;
222230 }
223231 else {
224232 $scope . selectedModel . splice ( 0 , $scope . selectedModel . length ) ;
225233 }
226-
227234 } ;
228235
229236 $scope . setSelectedItem = function ( id , dontRemove ) {
@@ -239,7 +246,8 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
239246
240247 if ( $scope . singleSelection )
241248 {
242- $scope . selectedModel = finalObj ;
249+ clearObject ( $scope . selectedModel ) ;
250+ angular . extend ( $scope . selectedModel , finalObj ) ;
243251 $scope . externalEvents . onItemSelect ( finalObj ) ;
244252
245253 return ;
@@ -261,7 +269,7 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
261269 $scope . isChecked = function ( id ) {
262270 if ( $scope . singleSelection )
263271 {
264- return $scope . selectedModel !== null && $scope . selectedModel [ $scope . settings . idProp ] === getFindObj ( id ) [ $scope . settings . idProp ] ;
272+ return $scope . selectedModel !== null && angular . isDefined ( $scope . selectedModel [ $scope . settings . idProp ] ) && $scope . selectedModel [ $scope . settings . idProp ] === getFindObj ( id ) [ $scope . settings . idProp ] ;
265273 }
266274
267275 return _ . findIndex ( $scope . selectedModel , getFindObj ( id ) ) !== - 1 ;
0 commit comments