Skip to content

Commit 9894887

Browse files
committed
If the value is undefined then use the model passed in as the value
1 parent d253c60 commit 9894887

File tree

1 file changed

+57
-49
lines changed

1 file changed

+57
-49
lines changed

slider.js

Lines changed: 57 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ angular.module('ui.bootstrap-slider', [])
1111
step: "=",
1212
value: "=",
1313
ngModel: '=',
14-
range:'=',
14+
range: '=',
1515
sliderid: '=',
1616
formatter: '&',
1717
onStartSlide: '&',
@@ -29,12 +29,15 @@ angular.module('ui.bootstrap-slider', [])
2929
function setOption(key, value, defaultValue) {
3030
options[key] = value || defaultValue;
3131
}
32+
3233
function setFloatOption(key, value, defaultValue) {
3334
options[key] = value ? parseFloat(value) : defaultValue;
3435
}
36+
3537
function setBooleanOption(key, value, defaultValue) {
3638
options[key] = value ? value + '' === 'true' : defaultValue;
3739
}
40+
3841
function getArrayOrValue(value) {
3942
return (angular.isString(value) && value.indexOf("[") === 0) ? angular.fromJson(value) : value;
4043
}
@@ -58,22 +61,27 @@ angular.module('ui.bootstrap-slider', [])
5861
setBooleanOption('naturalarrowkeys', attrs.naturalarrowkeys, false);
5962
setBooleanOption('reversed', attrs.reversed, false);
6063

64+
// if the value is undefined then use the model
65+
if ($scope.value === 'undefined') {
66+
$scope.value = $scope.ngModel;
67+
}
68+
6169
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)) {
6472
options.value = $scope.value;
6573
}
6674
else if (angular.isString($scope.value)) {
6775
options.value = getArrayOrValue($scope.value);
68-
if(!angular.isArray(options.value)) {
76+
if (!angular.isArray(options.value)) {
6977
var value = parseFloat($scope.value);
70-
if( isNaN(value) ) value = 5;
78+
if (isNaN(value)) value = 5;
7179

72-
if( value < $scope.min ) {
80+
if (value < $scope.min) {
7381
value = $scope.min;
7482
options.value = [value, options.max];
7583
}
76-
else if( value > $scope.max ) {
84+
else if (value > $scope.max) {
7785
value = $scope.max;
7886
options.value = [options.min, value];
7987
}
@@ -93,10 +101,10 @@ angular.module('ui.bootstrap-slider', [])
93101

94102
if ($scope.formatter) options.formatter = $scope.$eval($scope.formatter);
95103

96-
var slider = $(element).find( ".slider-input" ).eq( 0 );
97-
104+
var slider = $(element).find(".slider-input").eq(0);
105+
98106
// check if slider jQuery plugin exists
99-
if( $.fn.slider ) {
107+
if ($.fn.slider) {
100108
// adding methods to jQuery slider plugin prototype
101109
$.fn.slider.constructor.prototype.disable = function () {
102110
this.picker.off();
@@ -106,81 +114,81 @@ angular.module('ui.bootstrap-slider', [])
106114
};
107115

108116
// 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);
112120

113121
// 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)) {
116124
// if only single event name in string
117125
updateEvent = [updateEvent];
118126
}
119127
else {
120128
// default to slide event
121129
updateEvent = ['slide'];
122130
}
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 () {
127135
$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 () {
134142
$scope.$apply();
135-
} );
136-
} );
143+
});
144+
});
137145

138146
// Event listeners
139147
var sliderEvents = {
140148
slideStart: 'onStartSlide',
141149
slide: 'onSlide',
142150
slideStop: 'onStopSlide'
143151
};
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) {
146154

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});
150158

151-
$timeout( function () {
159+
$timeout(function () {
152160
$scope.$apply();
153-
} );
161+
});
154162
}
155-
} );
156-
} );
163+
});
164+
});
157165

158166
// deregister ngDisabled watcher to prevent memory leaks
159-
if ( angular.isFunction( ngDisabledDeregisterFn ) ) {
167+
if (angular.isFunction(ngDisabledDeregisterFn)) {
160168
ngDisabledDeregisterFn();
161169
ngDisabledDeregisterFn = null;
162170
}
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');
167175
}
168176
else {
169-
slider.slider( 'enable' );
177+
slider.slider('enable');
170178
}
171-
} );
179+
});
172180
}
173181
// 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+
});
178186
}
179187
}
180188

181189
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 () {
184192
initSlider();
185193
});
186194
});

0 commit comments

Comments
 (0)