@@ -108,13 +108,6 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
108
108
109
109
$scope . singleSelection = $scope . settings . selectionLimit === 1 ;
110
110
111
- if ( $scope . singleSelection )
112
- {
113
- if ( angular . isArray ( $scope . selectedModel ) && $scope . selectedModel . length === 0 )
114
- {
115
- $scope . selectedModel = null ;
116
- }
117
- }
118
111
119
112
function getFindObj ( id )
120
113
{
@@ -131,6 +124,21 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
131
124
return findObj ;
132
125
}
133
126
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
+
134
142
if ( $scope . settings . closeOnBlur ) {
135
143
$document . on ( 'click' , function ( e ) {
136
144
var target = e . target . parentElement ;
@@ -169,7 +177,7 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
169
177
170
178
if ( $scope . singleSelection )
171
179
{
172
- totalSelected = $scope . selectedModel !== null ? 1 : 0 ;
180
+ totalSelected = ( $scope . selectedModel !== null && angular . isDefined ( $scope . selectedModel [ $scope . settings . idProp ] ) ) ? 1 : 0 ;
173
181
}
174
182
else
175
183
{
@@ -218,12 +226,11 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
218
226
}
219
227
220
228
if ( $scope . singleSelection ) {
221
- $scope . selectedModel = null ;
229
+ clearObject ( $scope . selectedModel ) ;
222
230
}
223
231
else {
224
232
$scope . selectedModel . splice ( 0 , $scope . selectedModel . length ) ;
225
233
}
226
-
227
234
} ;
228
235
229
236
$scope . setSelectedItem = function ( id , dontRemove ) {
@@ -239,7 +246,8 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
239
246
240
247
if ( $scope . singleSelection )
241
248
{
242
- $scope . selectedModel = finalObj ;
249
+ clearObject ( $scope . selectedModel ) ;
250
+ angular . extend ( $scope . selectedModel , finalObj ) ;
243
251
$scope . externalEvents . onItemSelect ( finalObj ) ;
244
252
245
253
return ;
@@ -261,7 +269,7 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
261
269
$scope . isChecked = function ( id ) {
262
270
if ( $scope . singleSelection )
263
271
{
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 ] ;
265
273
}
266
274
267
275
return _ . findIndex ( $scope . selectedModel , getFindObj ( id ) ) !== - 1 ;
0 commit comments