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插件之自动添加删除行功能介绍
Oct 14 Javascript
ajax异步刷新实现更新数据库
Dec 03 Javascript
jQuery的ready方法详解
Nov 27 Javascript
使用jspdf生成pdf报表
Jul 03 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
Nov 17 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
Jul 10 Javascript
JS中如何实现点击a标签返回页面顶部的问题
Jan 19 Javascript
vue.js从安装到搭建过程详解
Mar 17 Javascript
vue 设置路由的登录权限的方法
Jul 03 Javascript
Postman的下载及安装教程详解
Oct 16 Javascript
JS匿名函数内部this指向问题详析
May 10 Javascript
JsonProperty 的使用方法详解
Oct 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
php随机取mysql记录方法小结
2014/12/27 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
php实现微信支付之退款功能
2018/05/30 PHP
PHP中16个高危函数整理
2019/09/19 PHP
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
浅析JavaScript基本类型与引用类型
2014/05/28 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
14款NodeJS Web框架推荐
2014/07/11 NodeJs
js中this用法实例详解
2015/05/05 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
利用iscroll4实现轮播图效果实例代码
2017/01/11 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
用实例解释Python中的继承和多态的概念
2015/04/27 Python
win与linux系统中python requests 安装
2016/12/04 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
python Pillow图像处理方法汇总
2019/10/16 Python
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
自愿解除劳动合同协议书
2014/09/11 职场文书
收款授权委托书
2014/10/02 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
中秋节主题班会
2015/08/14 职场文书