diff --git a/app/scripts/app.coffee b/app/scripts/app.coffee index 9f913ca..a36ce23 100644 --- a/app/scripts/app.coffee +++ b/app/scripts/app.coffee @@ -1,6 +1,6 @@ -'use strict' + 'use strict' -angular.module('nouislider', []) + angular.module('nouislider', []) .directive "slider", () -> restrict: "A" scope: @@ -14,15 +14,14 @@ angular.module('nouislider', []) ngTo: "=" link: (scope, element, attrs) -> - slider = $(element) + slider = element[0] callback = if scope.callback then scope.callback else 'slide' if scope.ngFrom? and scope.ngTo? fromParsed = null toParsed = null - - slider.noUiSlider + opts = start: [scope.ngFrom or scope.start, scope.ngTo or scope.end] step: parseFloat(scope.step or 1) connect: true @@ -30,44 +29,44 @@ angular.module('nouislider', []) range: min: [parseFloat scope.start] max: [parseFloat scope.end] - + slider = noUiSlider.create slider, opts slider.on callback, -> - [from, to] = slider.val() + [from, to] = slider.get() fromParsed = parseFloat from toParsed = parseFloat to - scope.$apply(-> + scope.$evalAsync(-> scope.ngFrom = fromParsed scope.ngTo = toParsed ) scope.$watch('ngFrom', (newVal, oldVal) -> if newVal isnt fromParsed - slider.val([newVal, null]) + slider.set([newVal, null]) ) scope.$watch('ngTo', (newVal, oldVal) -> if newVal isnt toParsed - slider.val([null, newVal]) + slider.set([null, newVal]) ) else parsedValue = null - - slider.noUiSlider + opts = start: [scope.ngModel or scope.start], step: parseFloat(scope.step or 1) range: min: [parseFloat scope.start] max: [parseFloat scope.end] + slider = noUiSlider.create slider, opts slider.on callback, -> - parsedValue = parseFloat slider.val() - scope.$apply -> + parsedValue = parseFloat slider.get() + scope.$evalAsync -> scope.ngModel = parsedValue scope.$watch('ngModel', (newVal, oldVal) -> if newVal isnt parsedValue - slider.val(newVal) + slider.set(newVal) ) diff --git a/src/nouislider.js b/src/nouislider.js index d9afa6c..49cbb7b 100644 --- a/src/nouislider.js +++ b/src/nouislider.js @@ -13,13 +13,13 @@ angular.module('nouislider', []).directive('slider', function () { ngTo: '=' }, link: function (scope, element, attrs) { - var callback, fromParsed, parsedValue, slider, toParsed; - slider = $(element); + var callback, fromParsed, opts, parsedValue, slider, toParsed; + slider = element[0]; callback = scope.callback ? scope.callback : 'slide'; if (scope.ngFrom != null && scope.ngTo != null) { fromParsed = null; toParsed = null; - slider.noUiSlider({ + opts = { start: [ scope.ngFrom || scope.start, scope.ngTo || scope.end @@ -31,20 +31,21 @@ angular.module('nouislider', []).directive('slider', function () { min: [parseFloat(scope.start)], max: [parseFloat(scope.end)] } - }); + }; + slider = noUiSlider.create(slider, opts); slider.on(callback, function () { var from, to, _ref; - _ref = slider.val(), from = _ref[0], to = _ref[1]; + _ref = slider.get(), from = _ref[0], to = _ref[1]; fromParsed = parseFloat(from); toParsed = parseFloat(to); - return scope.$apply(function () { + return scope.$evalAsync(function () { scope.ngFrom = fromParsed; return scope.ngTo = toParsed; }); }); scope.$watch('ngFrom', function (newVal, oldVal) { if (newVal !== fromParsed) { - return slider.val([ + return slider.set([ newVal, null ]); @@ -52,7 +53,7 @@ angular.module('nouislider', []).directive('slider', function () { }); return scope.$watch('ngTo', function (newVal, oldVal) { if (newVal !== toParsed) { - return slider.val([ + return slider.set([ null, newVal ]); @@ -60,26 +61,29 @@ angular.module('nouislider', []).directive('slider', function () { }); } else { parsedValue = null; - slider.noUiSlider({ + opts = { start: [scope.ngModel || scope.start], step: parseFloat(scope.step || 1), range: { min: [parseFloat(scope.start)], max: [parseFloat(scope.end)] } - }); + }; + slider = noUiSlider.create(slider, opts); slider.on(callback, function () { - parsedValue = parseFloat(slider.val()); - return scope.$apply(function () { + parsedValue = parseFloat(slider.get()); + return scope.$evalAsync(function () { return scope.ngModel = parsedValue; }); }); return scope.$watch('ngModel', function (newVal, oldVal) { if (newVal !== parsedValue) { - return slider.val(newVal); + return slider.set(newVal); } }); } } }; -}); \ No newline at end of file +}); /* +//@ sourceMappingURL=app.js.map +*/ \ No newline at end of file diff --git a/src/nouislider.min.js b/src/nouislider.min.js index 19db5ca..9aaf46b 100644 --- a/src/nouislider.min.js +++ b/src/nouislider.min.js @@ -1 +1 @@ -"use strict";angular.module("nouislider",[]).directive("slider",function(){return{restrict:"A",scope:{start:"@",step:"@",end:"@",callback:"@",margin:"@",ngModel:"=",ngFrom:"=",ngTo:"="},link:function(a,b){var c,d,e,f,g;return f=$(b),c=a.callback?a.callback:"slide",null!=a.ngFrom&&null!=a.ngTo?(d=null,g=null,f.noUiSlider({start:[a.ngFrom||a.start,a.ngTo||a.end],step:parseFloat(a.step||1),connect:!0,margin:parseFloat(a.margin||0),range:{min:[parseFloat(a.start)],max:[parseFloat(a.end)]}}),f.on(c,function(){var b,c,e;return e=f.val(),b=e[0],c=e[1],d=parseFloat(b),g=parseFloat(c),a.$apply(function(){return a.ngFrom=d,a.ngTo=g})}),a.$watch("ngFrom",function(a){return a!==d?f.val([a,null]):void 0}),a.$watch("ngTo",function(a){return a!==g?f.val([null,a]):void 0})):(e=null,f.noUiSlider({start:[a.ngModel||a.start],step:parseFloat(a.step||1),range:{min:[parseFloat(a.start)],max:[parseFloat(a.end)]}}),f.on(c,function(){return e=parseFloat(f.val()),a.$apply(function(){return a.ngModel=e})}),a.$watch("ngModel",function(a){return a!==e?f.val(a):void 0}))}}}); \ No newline at end of file +"use strict";angular.module("nouislider",[]).directive("slider",function(){return{restrict:"A",scope:{start:"@",step:"@",end:"@",callback:"@",margin:"@",ngModel:"=",ngFrom:"=",ngTo:"="},link:function(a,b,c){var d,e,f,g,h,i;return h=b[0],d=a.callback?a.callback:"slide",null!=a.ngFrom&&null!=a.ngTo?(e=null,i=null,f={start:[a.ngFrom||a.start,a.ngTo||a.end],step:parseFloat(a.step||1),connect:!0,margin:parseFloat(a.margin||0),range:{min:[parseFloat(a.start)],max:[parseFloat(a.end)]}},h=noUiSlider.create(h,f),h.on(d,function(){var b,c,d;return d=h.get(),b=d[0],c=d[1],e=parseFloat(b),i=parseFloat(c),a.$evalAsync(function(){return a.ngFrom=e,a.ngTo=i})}),a.$watch("ngFrom",function(a,b){return a!==e?h.set([a,null]):void 0}),a.$watch("ngTo",function(a,b){return a!==i?h.set([null,a]):void 0})):(g=null,f={start:[a.ngModel||a.start],step:parseFloat(a.step||1),range:{min:[parseFloat(a.start)],max:[parseFloat(a.end)]}},h=noUiSlider.create(h,f),h.on(d,function(){return g=parseFloat(h.get()),a.$evalAsync(function(){return a.ngModel=g})}),a.$watch("ngModel",function(a,b){return a!==g?h.set(a):void 0}))}}}); \ No newline at end of file