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实现杯子倒水问题自动求解程序
Mar 25 Javascript
jquery中each方法示例和常用选择器
Jul 08 Javascript
jQuery垂直多级导航菜单代码分享
Aug 18 Javascript
Vue.js组件tree实现无限级树形菜单
Dec 02 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
Jan 04 Javascript
vue2组件实现懒加载浅析
Mar 29 Javascript
基于hover的用法实例(推荐)
Jul 04 Javascript
JS实现给json数组动态赋值的方法示例
Mar 19 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
Jul 08 jQuery
javascript少儿编程关于返回值的函数内容
May 27 Javascript
在vue项目中引入highcharts图表的方法
Jan 21 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
Apr 28 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/07/17 PHP
PHP CURL 多线程操作代码实例
2015/05/13 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
jQuery实现的多屏图像图层切换效果实例
2015/05/07 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
Python中isnumeric()方法的使用简介
2015/05/19 Python
Python编程中的for循环语句学习教程
2015/10/14 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
python实现图片批量压缩程序
2018/07/23 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
Python文件操作函数用法实例详解
2019/12/24 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
python 贪心算法的实现
2020/09/18 Python
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
JDO的含义
2012/11/17 面试题
运输服务质量承诺书
2014/03/27 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python