Angular.js通过自定义指令directive实现滑块滑动效果

 更新时间:2017年10月13日 09:16:53   作者:~西门紫凌~  
这篇文章主要给大家介绍了关于Angular.js如何通过自定义指令directive实现滑块滑动的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用angularjs具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

前言

最近因为工作需要让我一个效果实现在页面某一部分内滑块随着滚动条上下滑动,说明一下我们项目使用技术angularJs.大家都知道,使用jquery很好实现。

那么angular如何实现呢,我用的是自定义指令(directive)。

方法如下

1.下面是我html部分代码,detail-scroll是我自定义的标签

...............
<div id="time" style="position: relative;">
 <div ng-style="maskStyle" detail-scroll style="transition: all linear 0.5s;-moz-transition:all linear 0.5s;-webkit-transition: all linear 0.5s;-o-transition: all linear 0.5s;">
 <div ng-click="maskTimeDetail()">
  <i class="zmdi zmdi-zoom-in" style="font-size: 22px;color: #fff;padding: 5px;"></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]

  } })

可以参考这个https://www.jb51.net/article/107045.htm,很详细~~~

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Angularjs实现搜索关键字高亮显示效果

    Angularjs实现搜索关键字高亮显示效果

    本篇文章主要介绍了Angularjs实现搜索关键字高亮显示的方法,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Angular.js中$apply()和$digest()的深入理解

    Angular.js中$apply()和$digest()的深入理解

    相信大家都知道$digest()和$apply()是AngularJS中的两个核心并且有时候容易引人误解的部分。我们需要深入理解这两者是如何运作的,从而才能理解AngularJS本身是如何运作的。本文的目的就是介绍$digest()和$apply()是如何确确实实的对你有用的。下面来一起看看吧。
    2016-10-10
  • angular十大常见问题

    angular十大常见问题

    本文主要介绍了angular十大常见问题,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • 简述Angular 5 快速入门

    简述Angular 5 快速入门

    这篇文章主要介绍了简述Angular 5 快速入门,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Angular5集成eventbus的示例代码

    Angular5集成eventbus的示例代码

    这篇文章主要介绍了Angular5集成eventbus的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • 使用AngularJS创建单页应用的编程指引

    使用AngularJS创建单页应用的编程指引

    这篇文章主要介绍了使用AngularJS创建单页应用的编程指引,AngularJS是一款高人气的JavaScript库,需要的朋友可以参考下
    2015-06-06
  • 详解AngularJS中的表达式使用

    详解AngularJS中的表达式使用

    这篇文章主要介绍了详解AngularJS中的表达式使用,包括处理数字和字符串等各种对象的操作,需要的朋友可以参考下
    2015-06-06
  • AngularJS路由Ui-router模块用法示例

    AngularJS路由Ui-router模块用法示例

    这篇文章主要介绍了AngularJS路由Ui-router模块用法,结合实例形式分析了Ui-router模块的功能、使用方法及相关注意事项,需要的朋友可以参考下
    2017-05-05
  • AngularJS 作用域详解及示例代码

    AngularJS 作用域详解及示例代码

    本文主要介绍AngularJS 作用域的知识,这里整理了基础资料,和示例代码以及实现效果图,有需要的小伙伴可以参考下
    2016-08-08
  • 详解angular部署到iis出现404解决方案

    详解angular部署到iis出现404解决方案

    这篇文章主要介绍了详解angular部署到iis出现404解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论