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 相关文章推荐
比较搞笑的js陷阱题
Feb 07 Javascript
jquery下异步提交表单 异步跨域提交表单
Nov 17 Javascript
小试JQuery的AutoComplete插件
May 04 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
Feb 06 Javascript
JSON+JavaScript处理JSON的简单例子
Mar 20 Javascript
浅析JavaScript中的typeof运算符
Nov 30 Javascript
jquery提交form表单简单示例分享
Mar 03 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
Mar 07 Javascript
详解webpack+vue-cli项目打包技巧
Jun 17 Javascript
vue在手机中通过本机IP地址访问webApp的方法
Aug 15 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
Sep 15 Javascript
JavaScript动态创建二维数组的方法示例
Feb 01 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
如何把PHP转成EXE文件
2006/10/09 PHP
转换中文日期的PHP程序
2006/10/09 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
Zend Framework处理Json数据方法详解
2016/12/09 PHP
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
python 反编译exe文件为py文件的实例代码
2019/06/27 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
python实现飞机大战项目
2020/03/11 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
Django静态资源部署404问题解决方案
2020/05/11 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
video.js支持m3u8格式直播的实现示例
2020/05/20 HTML / CSS
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
DELPHI面试题研发笔试试卷
2015/11/08 面试题
后勤人员自我评价怎么写
2013/09/19 职场文书
幼儿园校车司机的岗位职责
2014/01/30 职场文书
公司年会抽奖活动主持词
2014/03/31 职场文书
企业安全生产演讲稿
2014/05/09 职场文书