AngularJS中的DOM操作用法分析


Posted in Javascript onNovember 04, 2016

本文实例讲述了AngularJS中的DOM操作用法。分享给大家供大家参考,具体如下:

在angular中使用第三方插件时最好都封装到指令(directives)中去,DOM操作也最好都解构到指令中。

避免使用 jQuery 来操作 DOM,包括增加元素节点,移除元素节点,获取元素内容,隐藏或显示元素。你应该使用 directives 来实现这些动作,有必要的话你还要编写自己的 directives。

如果你感到很难改变习惯,那么考虑从你的网页中移除 jQuery 吧。真的,AngularJS 中的 $http 服务非常强大,基本可以替代 jQuery 的 ajax 函数,而且 AngularJS 内嵌了 jQLite —— 它内部实现的一个 jQuery 子集,包含了常用的 jQuery DOM 操作方法,事件绑定等等。但这并不是说用了AngularJS 就不能用 jQuery 了。如果你的网页有载入 jQuery 那么 AngularJS 会优先采用你的 jQuery,否则它会 fall back 到 jQLite。

需要自己编写 directives 的情况通常是当你使用了第三方的 jQuery 插件。因为插件在 AngularJS 之外对表单值进行更改,并不能即时反应到 Model 中。例如我们用得比较多的 jQueryUI datepicker 插件,当你选中一个日期后,插件会将日期字符串填到 input 输入框中。View 改变了,却并没有更新 Model,因为 $('.datepicker').datepicker(); 这段代码不属于 AngularJS 的管理范围。我们需要编写一个directive 来让 DOM 的改变即时更新到 Model 里。

var directives = angular.module('directives', []);
directives.directive('datepicker', function() {
  return function(scope, element, attrs) {
    element.datepicker({
      inline: true,
      dateFormat: 'dd.mm.yy',
      onSelect: function(dateText) {
        var modelPath = $(this).attr('ng-model');
        putObject(modelPath, scope, dateText);
        scope.$apply();
      }
    });
  }
});

然后在 HTML 中引入这个 direcitve

<input type="text" datepicker ng-model="myObject.myDateValue" />

说白了 directive 就是在 HTML 里写自定义的标签属性,达到插件的作用。这种声明式的语法扩展了 HTML。

需要说明的是,有一个 AngularUI 项目提供了大量的 directive 给我们使用,包括 Bootstrap 框架中的插件以及基于 jQuery 的其他很热门的 UI 组件。还有http://www.ngnice.com 社区贡献的ngshowcase。 AngularJS 的社区很活跃,生态系统健全。

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
收集的一些Array及String原型对象的扩展实现代码
Dec 05 Javascript
js创建数据共享接口——简化框架之间相互传值
Oct 23 Javascript
解析URI与URL之间的区别与联系
Nov 22 Javascript
小米公司JavaScript面试题
Dec 29 Javascript
JS模式之简单的订阅者和发布者模式完整实例
Jun 30 Javascript
javascript数组遍历的方法实例分析
Sep 13 Javascript
图片懒加载插件实例分享(含解析)
Jan 09 Javascript
纯原生js实现贪吃蛇游戏
Apr 16 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
Sep 12 Javascript
JS设计模式之单例模式(一)
Sep 29 Javascript
vue动画打包后失效问题的解决方法
Sep 18 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
Sep 21 Javascript
JS对大量数据进行多重过滤的方法
Nov 04 #Javascript
AngularJS模板加载用法详解
Nov 04 #Javascript
jQuery 遍历map()方法详解
Nov 04 #Javascript
Sortable.js拖拽排序使用方法解析
Nov 04 #Javascript
jQuery图片加载显示loading效果
Nov 04 #Javascript
JavaScript 深层克隆对象详解及实例
Nov 03 #Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
Nov 03 #Javascript
You might like
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
PHP实现微信图片上传到服务器的方法示例
2017/06/29 PHP
PHP实现与java 通信的插件使用教程
2019/08/11 PHP
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
2013/08/28 Javascript
jquery获取一个元素下面相同子元素的个数代码
2014/07/31 Javascript
在JS数组特定索引处指定位置插入元素的技巧
2014/08/24 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
node+express框架中连接使用mysql(经验总结)
2018/11/10 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
Pycharm修改python路径过程图解
2020/05/22 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
HTML5实现音频和视频嵌入的方法
2018/08/22 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
如何高效率的查找一个月以内的数据
2012/04/15 面试题
应用艺术毕业生的自我评价
2013/12/04 职场文书
文员的职业生涯规划发展方向
2014/02/08 职场文书
2014学年自我鉴定
2014/02/23 职场文书
餐饮总经理岗位职责
2014/03/07 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
双方协议书
2014/04/22 职场文书
交心谈心活动总结
2015/05/11 职场文书
毕业证明模板
2015/06/19 职场文书
git stash(储藏)的用法总结
2022/06/25 Servers