这篇文章主要介绍Angular.js如何通过自定义指令directive实现滑块滑动效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
方法如下
1.下面是我html部分代码,detail-scroll是我自定义的标签
............... <div id="time" > <div ng- detail-scroll > <div ng-click="maskTimeDetail()"> <i class="zmdi zmdi-zoom-in" ></i> </div> </div> <div class="tl-item alt" ng-repeat="time in timeList"> //..................... </div> </div>
2.开始写js代码
这里假设我们在某一个module下,控制器叫做AppCtrl
angular.module('xxxx',[ ]) .controller('AppCtrl', ['$scope',AppCtrl]) .directive('detailScroll',function(){ // 返回一个函数 return{ link : function($scope,element,attr){ var container = angular.element(window); var timeH = $('#time').offset().top;//获取该部分距离页面顶部距离 container.on('scroll', function() { if(container.scrollTop()>timeH){ $scope.maskStyle.top = container.scrollTop()-timeH+$('#time .alt').eq(0).height()/2+'px'; } }); }, restrict:'A', //ECMA E元素 C类名 M注释 A属性 }; }); function AppCtrl($scope) { //这是我给这个滑块定义的样式,一定要记住你要相对应你的父级元素相对定位, //因为我们要改变是它的top值 $scope.maskStyle={ width: '30px',height: '30px', 'background-color': '#ea1c0d', 'z-index': 999, position: 'absolute', top:0,left:0, opacity:'0.8', 'text-align':'center' }; }
detailScroll是 angular命名规范,驼峰式,一定要这样写,angular只有用自定义指令,才可以用jquery的一些方法。。
以上只是个简单的例子来演示一下,如果滑块移动的top值不准确,可以自行计算。
这只是简单的自定义指令写法,还有一个是可以引入模板
angular.module('app', []) .directive('myDirective', function() { function appCtrl($scope){ //处理逻辑 } return { restrict: 'EA', replace: true, scope:{ //想要从父级controller传到这里的函数,对象,变量,分别用(&,=,@),具体怎么用大家可以参考angular官网详解 } templateUrl:'路径或是html拼接的字符串', controller: function($scope, $element, $attrs, $transclude) { // 控制器逻辑 } //controller这样写也可以,还有一种直接写controller名,通过注入的方法,比如 controller:['$scope',appCtrl] } })
以上是“Angular.js如何通过自定义指令directive实现滑块滑动效果”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。