我正在尝试构建一个角指令,创建一个键盘可访问的滑块小部件。我在Github上找到了几个角滑块,但没有一个是键盘可访问的。因此,我试图将jQuery UI滑块转换成一个角指令。
下面是我如何构建没有角度的小部件。
HTML:
<div id="slider"></slider>
<input type="text" id="amount"/>Javascript:
$("#slider").slider({
min: 1,
max: 10,
slide: function(event, ui) {
$("#amount").val(ui.value);
}
});这就是我想要的角度指令的工作方式:
<slider min="1" max="10" ng-model="sliderValue"/>
<input type="text" ng-model="sliderValue"/>举个例子,这里是一个jsFiddle,它展示了有人如何将jQuery UI日期小部件转换为一个角指令。
http://jsfiddle.net/xB6c2/121/
我想为滑块小部件做一些类似的事情。谢谢!
发布于 2015-11-27 11:18:52
与罗德尼的解决方案相比,一个小小的改进是:
app.directive('slider', function() {
return {
restrict: 'AE',
link: function(scope, element, attrs) {
element.slider({
value: scope[attrs.ngModel],
min: parseInt(attrs.min),
max: parseInt(attrs.max),
step: parseFloat(attrs.step),
slide: function(event, ui) {
scope.$apply(function() {
scope[attrs.ngModel] = ui.value;
});
}
});
scope.$watch(attrs.ngModel, function(newVal, oldVal){
element.slider({value: newVal});
});
}
};
});它允许检测和更新滑块的位置,如果模型改变。
如果您的模型包含点(例如,ngmodel = "Configuration.Size"),则scope[attrs.ngModel]不再工作。解决方法是从_.get库中使用lodash和_.set。
https://stackoverflow.com/questions/25550379
复制相似问题