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 相关文章推荐
jQuery 解析xml文件
Aug 09 Javascript
jquery 选择器引擎sizzle浅析
Feb 06 Javascript
js获取时间(本周、本季度、本月..)
Nov 22 Javascript
探讨js字符串数组拼接的性能问题
Oct 11 Javascript
javascript中call和apply的用法示例分析
Apr 02 Javascript
JavaScript导航脚本判断当前导航
Jul 12 Javascript
BootStrap table使用方法分析
Nov 08 Javascript
Angular组件化管理实现方法分析
Mar 17 Javascript
react.js 获取真实的DOM节点实例(必看)
Apr 17 Javascript
AngularJS入门教程一:路由用法初探
May 27 Javascript
详解vue+css3做交互特效的方法
Nov 20 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
Jul 11 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
ftp类(myftp.php)
2006/10/09 PHP
PHP实现获取图片颜色值的方法
2014/07/11 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
Python实现购物车程序
2018/04/16 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
Windows下python3安装tkinter的问题及解决方法
2020/01/06 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
xml有哪些解析技术?区别是什么
2016/04/26 面试题
中海讯通笔试题
2015/09/15 面试题
春节联欢会主持词
2014/03/24 职场文书
汽车广告策划方案
2014/05/31 职场文书
道歉短信大全
2015/05/12 职场文书
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技