AngularJS driective 封装 自动滚动插件

Posted 庞国明 博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AngularJS driective 封装 自动滚动插件相关的知识,希望对你有一定的参考价值。

1.ui-smooth-scroll.js文件内容

angular.module(\'app\')
    .directive(\'uiSmoothScroll\', [\'$location\', \'$anchorScroll\', function($location, $anchorScroll) {
        return {
            restrict: \'AC\',
            scope: {
                data:"="
            },
            template: \'<div class="smooth-scroll-container">\'+
                    \'<ul class="smooth-scroll">\'+
                        \'<li ng-repeat="item in data">\'+
                            \'<a  href="{{item.url}}" ><img ng-src="{{item.image}}" alt="" class="img-responsive" /></a>\'+
                        \'</li>\'+
                    \'</ul>\'+
                \'</div>\',
            link: function(scope, element, attrs) {
                setTimeout(function(){
                    var c = $(element).find(\'.smooth-scroll-container\')[0];
                    var ul = $(c).find(\'.smooth-scroll\')[0];
                    var lis = ul.getElementsByTagName(\'li\');
                    var itemCount = lis.length,
                        width = lis[0].offsetWidth,
                        marquee = function() {
                            c.scrollLeft += 2;
                            if (c.scrollLeft > width) {
                                ul.appendChild(ul.getElementsByTagName(\'li\')[0]);
                                c.scrollLeft = 0;
                            };
                        },
                        speed = 30;
                    ul.style.width = (width+13) * itemCount + 40 + \'px\' ;
                    var timer = setInterval(marquee, speed);
                    c.onmouseover = function() {
                        clearInterval(timer);
                    };
                    c.onmouseout = function() {
                        timer = setInterval(marquee, speed);
                    };
                },100);

            }
        };
    }]);

  html 使用方法

 <div ui-smooth-scroll data="slides">

  Controller 中对 数据的绑定

 $scope.slides = [{ image: \'img/qy_lunbo_01.png\' },{ image: \'img/qy_lunbo_02.png\' },{ image: \'img/qy_lunbo_03.png\' },{ image: \'img/qy_lunbo_04.png\' }];

  

 

搞定!

 

以上是关于AngularJS driective 封装 自动滚动插件的主要内容,如果未能解决你的问题,请参考以下文章

AngularJs轮询器写法

百度上传插件WebUploader,angularjs指令封装

angularjs2 listview的封装

angularJS 利用 service 封装 POST 请求

在 TypeScript 上优化 AngularJS 1.5.7 指令 - ...args 不起作用并且封装了 2 个类

如何封装AngularJS函数但仍然可以测试它