Angular.JS通过指令操作DOM的方法


Posted in Javascript onMay 10, 2017

在指令而非在控制器中操作DOM

相信大家在页面处理中,难免会遇到操作DOM的情况,在AngularJS中,对DOM的操作是在指令而非控制器中完成的。

AngularJS强调隔离的思想:把复杂的逻辑和操作放在指令或服务中,控制器作为视图和$scope之间的桥梁,仅仅用来存储数据模型。

jqLite

为了便于DOM操作,AngularJS内部封装了angular.element,如果现有项目中已经引入的jQuery,angular.element相当于jQuery函数的别名,否则,angular.element代表AngularJS对jQuery封装的一个子集,称为”jQuery lite”或者jqLite。jqLite不具备jQuery全部方法,详见AngularJS官方文档 angular.element。

link-function

link-function可以注册DOM监听器,同时更新DOM,更多link-function介绍参考这篇文章AngularJS Custom-Directives link-function guide

指令代码

一个引入jQuery操作DOM的指令如下:

webApp.directive("detailTopStick", ["$timeout", "$window", function ($timeout, $window) {
 return {
 restrict: "A",
 link: function (scope) {
 $timeout(function () {
 var navbar = $(".navbar-nav"); 
 var navbarOffsetTop = navbar.offset().top;
 var headerInfo = $(".header-info");
 var headerInfoMarginBottom = parseInt(headerInfo.css("margin-bottom"));
 var navbarHeight = parseInt(navbar.css("height"));
 
 angular.element($window).bind("resize", function () { // 窗口绑定resize事件
  navbar.css("width", headerInfo.width());
  navbarOffsetTop = navbar.offset().top;
  scope.$apply();
 });
 
 angular.element($window).bind("scroll", function () {
  if ($window.scrollY > navbarOffsetTop) {
  navbar.css("width", headerInfo.width());
  navbar.addClass("detail-navbar-fix");
  headerInfo.css("margin-bottom", headerInfoMarginBottom + navbarHeight);
  }
  else {
  navbar.removeClass("detail-navbar-fix");
  headerInfo.css("margin-bottom", headerInfoMarginBottom);
  }
  scope.$apply();
 });
 
 navbar.on("click", function () {
  if ($window.scrollY > navbarOffsetTop) {
  $window.scrollTo(0, navbarOffsetTop);
  }
 });
 });
 }
 };
}]);

如果未引入jquery,可以这样获取元素:angular.element(document.querySelector(“.class-name”))

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jQuery TextBox自动完成条
Jul 22 Javascript
jQuery点击后一组图片左右滑动的实现代码
Aug 16 Javascript
JS实现页面超时后自动跳转到登陆页面
Jan 19 Javascript
基于jquery实现左右按钮点击的图片切换效果
Jan 27 Javascript
多个js毫秒倒计时同时进行效果
Jan 05 Javascript
jQuery实现本地预览上传图片功能
Jan 08 Javascript
JS模拟的Map类实现方法
Jun 17 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
Mar 10 Javascript
JavaScript登录验证基础教程
Nov 01 Javascript
vue2.0使用swiper组件实现轮播效果
Nov 27 Javascript
jQuery属性选择器用法实例分析
Jun 28 jQuery
小程序接入腾讯位置服务的详细流程
Mar 03 Javascript
JS实现队列的先进先出功能示例
May 10 #Javascript
BootStrap的两种模态框方式
May 10 #Javascript
微信小程序之购物车功能
Sep 23 #Javascript
js canvas实现QQ拨打电话特效
May 10 #Javascript
bootstrap弹出层的多种触发方式
May 10 #Javascript
详解使用vue脚手架工具搭建vue-webpack项目
May 10 #Javascript
微信小程序 支付后台java实现实例
May 09 #Javascript
You might like
php数据类型判断函数有哪些
2013/09/23 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
JavaScript类和继承 prototype属性
2010/09/03 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
THREE.JS入门教程(5)你应当知道的十件事
2013/01/24 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
nodejs结合socket.io实现websocket通信功能的方法
2018/01/12 NodeJs
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
python 合并文件的具体实例
2013/08/08 Python
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
python利用正则表达式搜索单词示例代码
2017/09/24 Python
Python退火算法在高次方程的应用
2018/07/26 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
Linux Interview Questions For software testers
2012/06/02 面试题
普通院校学生的自荐信
2013/11/27 职场文书
中国入世承诺
2014/04/01 职场文书
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
应聘教师求职信范文
2015/03/20 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
灵能百分百第三季什么时候来?
2022/03/15 日漫