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 相关文章推荐
jQuery选择没有colspan属性的td的代码
Jul 06 Javascript
jquery插件之easing使用
Aug 19 Javascript
自己写了一个展开和收起的多更能型的js效果
Mar 05 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
Jul 09 Javascript
web css实现整站样式互相切换
Oct 29 Javascript
js图片自动轮播代码分享(js图片轮播)
May 06 Javascript
jQuery中$(function() {});问题详解
Aug 10 Javascript
Markdown+Bootstrap图片自适应属性详解
May 21 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
Jan 21 Javascript
JS操作json对象key、value的常用方法分析
Oct 29 Javascript
编写一个javascript元循环求值器的方法
Apr 14 Javascript
利用JavaScript模拟京东按键输入功能
Dec 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
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
js设置文本框中焦点位置在最后的示例代码(简单实用)
2014/03/04 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
2019/02/19 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
2019/08/23 Python
Python实现简单的2048小游戏
2021/03/01 Python
Larsson & Jennings官网:现代瑞士钟表匠
2018/03/20 全球购物
宝信软件JAVA工程师面试经历
2012/08/19 面试题
幼儿园中秋节活动方案
2014/02/06 职场文书
企业内控岗位的职责
2014/02/07 职场文书
我的长生果教学反思
2014/04/28 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
运动会主持词大全
2015/07/02 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
Python turtle编写简单的球类小游戏
2022/03/31 Python