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技巧--转义符&quot;\&quot;的妙用
Jan 09 Javascript
tangram框架响应式加载图片方法
Nov 21 Javascript
jquery live()重复绑定的解决方法介绍
Jan 03 Javascript
EasyUI实现二级页面的内容勾选的方法
Mar 01 Javascript
Web开发必知Javascript技巧大全
Feb 23 Javascript
javascript实现的猜数小游戏完整实例代码
May 10 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
May 10 Javascript
Angular2 (RC5) 路由与导航详解
Sep 21 Javascript
three.js实现3D模型展示的示例代码
Dec 31 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
Sep 12 Javascript
VueX模块的具体使用(小白教程)
Jun 05 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
Jun 08 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修改时间格式的代码
2011/05/29 PHP
php异常处理使用示例
2014/02/25 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
$.ajax json数据传递方法
2008/11/19 Javascript
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
JS打印gridview实现原理及代码
2013/02/05 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
对Python _取log的几种方式小结
2019/07/25 Python
解决python flask中config配置管理的问题
2019/07/26 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
法律六进活动方案
2014/03/13 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
博士生求职信
2014/07/06 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
《法国号》教学反思
2016/02/22 职场文书
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android