AngularJS  自定义指令详解及实例代码


Posted in Javascript onSeptember 14, 2016

AngularJS支持用户自定义标签属性,在不需要使用DOM节点操作的情况下,添加自定义的内容。

前面提到AngularJS的四大特性:

1 MVC

2 模块化

3 指令

4 双向数据绑定

下面将会介绍如下的内容:

1 如何自定义指令

2 自定义指令的使用

3 自定义指令的内嵌使用

如何自定义指令:

Angular是基于模块的框架,因此上来肯定要创建一个自己的模块:

var myAppModule = angular.module("myApp",[]);

然后在此模块基础上创建指令directive      

myAppModule.directive("xingoo",function(){
    return{
     restrict:'AECM',
     template:'<div>hello my directive</div>',
     repalce:true
    }
   });

其中,xingoo是我们自定义标签的名字,后面跟着它的方法函数。

函数return了一个键值对组合,其中定义了标签的使用方法、属性等等内容。

那么看看它都定义了哪些内容吧:

1 restrict:定义了标签的使用方法,一共四种,分别是AECM

2 template:定义标签的模板。里面是用于替换自定义标签的字符串

3 repalce:是否支持替换

4 transclude:是否支持内嵌

如何使用指令:

上面提到了标签的四种使用方法,即AECM。

A attribute属性:当做属性来使用

<div xingoo></div>

E element元素:当做标签元素来使用

<xingoo></xingoo>

C class类:当做CSS样式来使用

<div class="xingoo"></div>

M comments注释:当做注释使用(这种方式在1.2版本下亲测不可用!)

<!-- directive:xingoo -->
<div></div>

一般来说推荐,当做属性和元素来使用。

当想要在现有的html标签上扩展属性时,采用属性的方式。

当想要自定义标签时,采用标签的形式。

想要使用那种方式,必须要在定义directive中的restrict里面声明对应的字母。 

指令的内嵌使用:

因为标签内部可以嵌套其他的标签,因此想要在自定义标签中嵌套其他的元素标签,则需要:

1 使用transclude属性,设置为true。

2 并使用ng-transclude属性,定义内部嵌套的位置。

代码如下:      

myAppModule.directive("test",function(){
    return{
     restrict:'AECM',
     transclude:true,
     template:"<div>haha! <div ng-transclude></div> wuwu!</div>"
    }
   });
 

全部代码

<!doctype html>
<html ng-app="myApp">
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <script src="http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"></script>
 </head>
 <body>
  
  <xingoo></xingoo>
  <div xingoo></div>
  <div class="xingoo"></div>
  <!-- directive:xingoo -->
  <div></div>
  <hr>
  <xingoo>3333</xingoo>
  <hr>
  <test>4444</test>


  <script type="text/javascript">
   var myAppModule = angular.module("myApp",[]);

   myAppModule.directive("xingoo",function(){
    return{
     restrict:'AECM',
     template:'<div>hello my directive</div>',
     repalce:true
    }
   });

   myAppModule.directive("test",function(){
    return{
     restrict:'AECM',
     transclude:true,
     template:"<div>haha! <div ng-transclude></div> wuwu!</div>"
    }
   });
  </script>
 </body>
</html>

运行结果

AngularJS  自定义指令详解及实例代码

以上就是对AngularJS 自定义指令的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

Javascript 相关文章推荐
prettify 代码高亮着色器google出品
Dec 28 Javascript
window.location.href的用法(动态输出跳转)
Aug 09 Javascript
JavaScript计时器示例分析
Feb 05 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
Feb 13 Javascript
JS上传图片前实现图片预览效果的方法
Mar 02 Javascript
dedecms页面如何获取会员状态的实例代码
Mar 15 Javascript
javascript垃圾收集机制的原理分析
Dec 08 Javascript
Javascript 两种刷新方法以及区别和适用范围
Jan 17 Javascript
bootstrap datepicker插件默认英文修改为中文
Jul 28 Javascript
ionic3 懒加载
Aug 16 Javascript
基于vue 动态加载图片src的解决方法
Feb 05 Javascript
JS实现刷新网页后之前浏览位置保持不变示例详解
Aug 14 Javascript
AngularJS 自定义过滤器详解及实例代码
Sep 14 #Javascript
AngularJS 中的Promise --- $q服务详解
Sep 14 #Javascript
AngularJS bootstrap启动详解及实例代码
Sep 14 #Javascript
AngularJS equal比较对象实例详解
Sep 14 #Javascript
AngularJS API之copy深拷贝详解及实例
Sep 14 #Javascript
AngularJS $injector 依赖注入详解
Sep 14 #Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
Sep 14 #Javascript
You might like
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
Prototype 工具函数 学习
2009/07/23 Javascript
javascript 函数使用说明
2010/04/07 Javascript
js类型检查实现代码
2010/10/29 Javascript
最短的IE判断代码
2011/03/13 Javascript
jquery实现动态菜单的实例代码
2013/11/28 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
json跨域调用python的方法详解
2017/01/11 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
建筑工程技术应届生自荐信
2013/09/27 职场文书
求职自荐信的格式
2014/04/07 职场文书
应届大学生求职信
2014/07/20 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
MySQL池化框架学习接池自定义
2022/07/23 MySQL