@@ -11,7 +11,7 @@ angular.module('ui.bootstrap-slider', [])
11
11
step : "=" ,
12
12
value : "=" ,
13
13
ngModel : '=' ,
14
- range :'=' ,
14
+ range : '=' ,
15
15
sliderid : '=' ,
16
16
formatter : '&' ,
17
17
onStartSlide : '&' ,
@@ -29,12 +29,15 @@ angular.module('ui.bootstrap-slider', [])
29
29
function setOption ( key , value , defaultValue ) {
30
30
options [ key ] = value || defaultValue ;
31
31
}
32
+
32
33
function setFloatOption ( key , value , defaultValue ) {
33
34
options [ key ] = value ? parseFloat ( value ) : defaultValue ;
34
35
}
36
+
35
37
function setBooleanOption ( key , value , defaultValue ) {
36
38
options [ key ] = value ? value + '' === 'true' : defaultValue ;
37
39
}
40
+
38
41
function getArrayOrValue ( value ) {
39
42
return ( angular . isString ( value ) && value . indexOf ( "[" ) === 0 ) ? angular . fromJson ( value ) : value ;
40
43
}
@@ -58,22 +61,27 @@ angular.module('ui.bootstrap-slider', [])
58
61
setBooleanOption ( 'naturalarrowkeys' , attrs . naturalarrowkeys , false ) ;
59
62
setBooleanOption ( 'reversed' , attrs . reversed , false ) ;
60
63
64
+ // if the value is undefined then use the model
65
+ if ( $scope . value === 'undefined' ) {
66
+ $scope . value = $scope . ngModel ;
67
+ }
68
+
61
69
setBooleanOption ( 'range' , $scope . range , false ) ;
62
- if ( options . range ) {
63
- if ( angular . isArray ( $scope . value ) ) {
70
+ if ( options . range ) {
71
+ if ( angular . isArray ( $scope . value ) ) {
64
72
options . value = $scope . value ;
65
73
}
66
74
else if ( angular . isString ( $scope . value ) ) {
67
75
options . value = getArrayOrValue ( $scope . value ) ;
68
- if ( ! angular . isArray ( options . value ) ) {
76
+ if ( ! angular . isArray ( options . value ) ) {
69
77
var value = parseFloat ( $scope . value ) ;
70
- if ( isNaN ( value ) ) value = 5 ;
78
+ if ( isNaN ( value ) ) value = 5 ;
71
79
72
- if ( value < $scope . min ) {
80
+ if ( value < $scope . min ) {
73
81
value = $scope . min ;
74
82
options . value = [ value , options . max ] ;
75
83
}
76
- else if ( value > $scope . max ) {
84
+ else if ( value > $scope . max ) {
77
85
value = $scope . max ;
78
86
options . value = [ options . min , value ] ;
79
87
}
@@ -93,10 +101,10 @@ angular.module('ui.bootstrap-slider', [])
93
101
94
102
if ( $scope . formatter ) options . formatter = $scope . $eval ( $scope . formatter ) ;
95
103
96
- var slider = $ ( element ) . find ( ".slider-input" ) . eq ( 0 ) ;
97
-
104
+ var slider = $ ( element ) . find ( ".slider-input" ) . eq ( 0 ) ;
105
+
98
106
// check if slider jQuery plugin exists
99
- if ( $ . fn . slider ) {
107
+ if ( $ . fn . slider ) {
100
108
// adding methods to jQuery slider plugin prototype
101
109
$ . fn . slider . constructor . prototype . disable = function ( ) {
102
110
this . picker . off ( ) ;
@@ -106,81 +114,81 @@ angular.module('ui.bootstrap-slider', [])
106
114
} ;
107
115
108
116
// destroy previous slider to reset all options
109
- slider . slider ( options ) ;
110
- slider . slider ( 'destroy' ) ;
111
- slider . slider ( options ) ;
117
+ slider . slider ( options ) ;
118
+ slider . slider ( 'destroy' ) ;
119
+ slider . slider ( options ) ;
112
120
113
121
// everything that needs slider element
114
- var updateEvent = getArrayOrValue ( attrs . updateevent ) ;
115
- if ( angular . isString ( updateEvent ) ) {
122
+ var updateEvent = getArrayOrValue ( attrs . updateevent ) ;
123
+ if ( angular . isString ( updateEvent ) ) {
116
124
// if only single event name in string
117
125
updateEvent = [ updateEvent ] ;
118
126
}
119
127
else {
120
128
// default to slide event
121
129
updateEvent = [ 'slide' ] ;
122
130
}
123
- angular . forEach ( updateEvent , function ( sliderEvent ) {
124
- slider . on ( sliderEvent , function ( ev ) {
125
- ngModelCtrl . $setViewValue ( ev . value ) ;
126
- $timeout ( function ( ) {
131
+ angular . forEach ( updateEvent , function ( sliderEvent ) {
132
+ slider . on ( sliderEvent , function ( ev ) {
133
+ ngModelCtrl . $setViewValue ( ev . value ) ;
134
+ $timeout ( function ( ) {
127
135
$scope . $apply ( ) ;
128
- } ) ;
129
- } ) ;
130
- } ) ;
131
- slider . on ( 'change' , function ( ev ) {
132
- ngModelCtrl . $setViewValue ( ev . value . newValue ) ;
133
- $timeout ( function ( ) {
136
+ } ) ;
137
+ } ) ;
138
+ } ) ;
139
+ slider . on ( 'change' , function ( ev ) {
140
+ ngModelCtrl . $setViewValue ( ev . value . newValue ) ;
141
+ $timeout ( function ( ) {
134
142
$scope . $apply ( ) ;
135
- } ) ;
136
- } ) ;
143
+ } ) ;
144
+ } ) ;
137
145
138
146
// Event listeners
139
147
var sliderEvents = {
140
148
slideStart : 'onStartSlide' ,
141
149
slide : 'onSlide' ,
142
150
slideStop : 'onStopSlide'
143
151
} ;
144
- angular . forEach ( sliderEvents , function ( sliderEventAttr , sliderEvent ) {
145
- slider . on ( sliderEvent , function ( ev ) {
152
+ angular . forEach ( sliderEvents , function ( sliderEventAttr , sliderEvent ) {
153
+ slider . on ( sliderEvent , function ( ev ) {
146
154
147
- if ( $scope [ sliderEventAttr ] ) {
148
- var invoker = $parse ( attrs [ sliderEventAttr ] ) ;
149
- invoker ( $scope . $parent , { $event : ev , value : ev . value } ) ;
155
+ if ( $scope [ sliderEventAttr ] ) {
156
+ var invoker = $parse ( attrs [ sliderEventAttr ] ) ;
157
+ invoker ( $scope . $parent , { $event : ev , value : ev . value } ) ;
150
158
151
- $timeout ( function ( ) {
159
+ $timeout ( function ( ) {
152
160
$scope . $apply ( ) ;
153
- } ) ;
161
+ } ) ;
154
162
}
155
- } ) ;
156
- } ) ;
163
+ } ) ;
164
+ } ) ;
157
165
158
166
// deregister ngDisabled watcher to prevent memory leaks
159
- if ( angular . isFunction ( ngDisabledDeregisterFn ) ) {
167
+ if ( angular . isFunction ( ngDisabledDeregisterFn ) ) {
160
168
ngDisabledDeregisterFn ( ) ;
161
169
ngDisabledDeregisterFn = null ;
162
170
}
163
- if ( angular . isDefined ( attrs . ngDisabled ) ) {
164
- ngDisabledDeregisterFn = $scope . $watch ( attrs . ngDisabled , function ( value ) {
165
- if ( value ) {
166
- slider . slider ( 'disable' ) ;
171
+ if ( angular . isDefined ( attrs . ngDisabled ) ) {
172
+ ngDisabledDeregisterFn = $scope . $watch ( attrs . ngDisabled , function ( value ) {
173
+ if ( value ) {
174
+ slider . slider ( 'disable' ) ;
167
175
}
168
176
else {
169
- slider . slider ( 'enable' ) ;
177
+ slider . slider ( 'enable' ) ;
170
178
}
171
- } ) ;
179
+ } ) ;
172
180
}
173
181
// deregister ngModel watcher to prevent memory leaks
174
- if ( angular . isFunction ( ngModelDeregisterFn ) ) ngModelDeregisterFn ( ) ;
175
- ngModelDeregisterFn = $scope . $watch ( 'ngModel' , function ( value ) {
176
- slider . slider ( 'setValue' , value ) ;
177
- } ) ;
182
+ if ( angular . isFunction ( ngModelDeregisterFn ) ) ngModelDeregisterFn ( ) ;
183
+ ngModelDeregisterFn = $scope . $watch ( 'ngModel' , function ( value ) {
184
+ slider . slider ( 'setValue' , value ) ;
185
+ } ) ;
178
186
}
179
187
}
180
188
181
189
var watchers = [ 'min' , 'max' , 'step' , 'range' ] ;
182
- angular . forEach ( watchers , function ( prop ) {
183
- $scope . $watch ( prop , function ( ) {
190
+ angular . forEach ( watchers , function ( prop ) {
191
+ $scope . $watch ( prop , function ( ) {
184
192
initSlider ( ) ;
185
193
} ) ;
186
194
} ) ;
0 commit comments