首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将jQuery UI滑块部件转换为AngularJS指令

将jQuery UI滑块部件转换为AngularJS指令
EN

Stack Overflow用户
提问于 2014-08-28 13:43:52
回答 3查看 8.1K关注 0票数 2

我正在尝试构建一个角指令,创建一个键盘可访问的滑块小部件。我在Github上找到了几个角滑块,但没有一个是键盘可访问的。因此,我试图将jQuery UI滑块转换成一个角指令。

下面是我如何构建没有角度的小部件。

HTML:

代码语言:javascript
复制
<div id="slider"></slider>
<input type="text" id="amount"/>

Javascript:

代码语言:javascript
复制
$("#slider").slider({
  min: 1,
  max: 10,
  slide: function(event, ui) {
    $("#amount").val(ui.value);
  }
});

这就是我想要的角度指令的工作方式:

代码语言:javascript
复制
<slider min="1" max="10" ng-model="sliderValue"/>
<input type="text" ng-model="sliderValue"/>

举个例子,这里是一个jsFiddle,它展示了有人如何将jQuery UI日期小部件转换为一个角指令。

http://jsfiddle.net/xB6c2/121/

我想为滑块小部件做一些类似的事情。谢谢!

EN

Stack Overflow用户

发布于 2015-11-27 11:18:52

与罗德尼的解决方案相比,一个小小的改进是:

代码语言:javascript
复制
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

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25550379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档