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的类似新浪微博展示信息效果的代码
Jul 23 Javascript
解析URI与URL之间的区别与联系
Nov 22 Javascript
用Jquery选择器计算table中的某一列某一行的合计
Aug 13 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
Dec 04 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
Sep 10 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
May 23 jQuery
VUE安装使用教程详解
Jun 03 Javascript
js中let能否完全替代IIFE
Jun 15 Javascript
JavaScript静态作用域和动态作用域实例详解
Jun 17 Javascript
用Vue.js在浏览器中实现裁剪图像功能
Jun 18 Javascript
jQuery实现聊天对话框
Feb 08 jQuery
Vue3中的Refs和Ref详情
Nov 11 Vue.js
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文件上传原理简单分析
2011/05/29 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
json简单介绍
2008/06/10 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
nodejs基础应用
2017/02/03 NodeJs
Bootstrap 3 进度条的实现
2017/02/22 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
python网络编程学习笔记(四):域名系统
2014/06/09 Python
python进阶教程之循环对象
2014/08/30 Python
Python中断言Assertion的一些改进方案
2016/10/27 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
详解Django配置JWT认证方式
2020/05/09 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
集团公司总经理岗位职责
2013/12/20 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
单位员工收入证明样本
2014/10/09 职场文书
学生会辞职信
2015/03/02 职场文书
教师师德工作总结2015
2015/07/22 职场文书
初中政治教学工作总结
2015/08/13 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
Opencv实现二维直方图的计算及绘制
2021/07/21 Python