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 相关文章推荐
De facto standard 世界上不可思议的事实标准
Aug 29 Javascript
Javascript面向对象编程(三) 非构造函数的继承
Aug 28 Javascript
js中indexof的用法详细解析
Dec 24 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
Dec 31 Javascript
如何动态的导入js文件具体该怎么实现
Jan 14 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
Sep 14 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
Jun 07 Javascript
js for循环倒序输出数组元素的实例
Mar 01 Javascript
vue-cli中打包图片路径错误的解决方法
Oct 26 Javascript
axios发送post请求,提交图片类型表单数据方法
Mar 16 Javascript
angular 表单验证器验证的同时限制输入的实现
Apr 11 Javascript
微信小程序实现自定义底部导航
Nov 18 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
php printf输出格式使用说明
2010/12/05 PHP
PHP中计算字符串相似度的函数代码
2012/12/29 PHP
关于PHP开发的9条建议
2015/07/27 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
jQuery EasyUI Tab 选项卡问题小结
2016/08/16 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
基于JS实现限时抢购倒计时间表代码
2017/05/09 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
Linux Centos7.2下安装nodejs&amp;npm配置全局路径的教程
2018/05/15 NodeJs
Node.js Domain 模块实例详解
2020/03/18 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
Python数据结构之Array用法实例
2014/10/09 Python
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
Lungolivigno Fashion官网:高级时装在线购物
2020/10/17 全球购物
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
Linux如何为某个操作添加别名
2015/02/05 面试题
高校辅导员推荐信范文
2013/12/25 职场文书
《云雀的心愿》教学反思
2014/02/25 职场文书
小学生作文评语大全
2014/04/21 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
彻底解决MySQL使用中文乱码的方法
2022/01/22 MySQL
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL