AngularJS directive返回对象属性详解


Posted in Javascript onMarch 28, 2016

 写在前面:由于directive部分是angularjs中的重中之重,所以会分多篇章进行讲解。本章主要讲解directive返回对象中比较简单的属性

angularjs中使用.directive()来定义指令,该方法接收两个参数:name(指令的名字)、factory_function(该函数定义指令的全部行为,返回一个对象)

栗子:

//index.js
angular.module('myApp',[]);
myApp.directive('myDirective',function() {return {};});

返回对象中包含以下属性及方法:

1:restrict:String

该属性用来说明myDirective指令在DOM中是以何种形式被声明的(即在html中该把它用在什么地方)
该属性可选值有:E(元素)、A(属性,默认值)、C(类名)、M(注释),可单独使用,也可组合使用
看到过一种说法:如果是想要自定义一个独立的指令功能,即该指令独立完成一系列操作,不用依附其他元素、属性等,就将该指令定义为元素;如果想要用该指令来扩展某已存在指令的功能,便将其定义为属性。不知道这么理解是否合理,但确实也是一个很好的可以借鉴的选择方法标准

2:priority:Number

该属性用来定义指令的优先级(默认为0,ngRepeat是所有内置指令中优先级最高的,为1000),优先级高的先执行。

3:terminal:Boolean

该属性与priority属性有一定联系,它用来判断是否停止运行当前元素上比本指令优先级低的指令,但相同优先级的依旧会执行
栗子:

//index.js
angular.module('myApp',[])
.directive('myDirective',function() {
  return {
    restrict: 'AE',
    priority: 1,
    template: '<div>hello world</div>'
  };
})
.directive('myDirective1',function() {
  return {
    restrict: 'AE',
    priority: 3,
    terminal: true
  };
})
<!-- index.html -->
<div my-directive my-directive1></div>

如果没有定义myDirective1指令,结果浏览器会显示hello world,但添加了myDirective1指令之后,并将其优先级priority设置比myDirective大,且在myDirective1上设置属性terminal属性为true之后,便会停止myDirective指令的执行。

 4:template:String/Function

该属性定义一个模板(即在html文件中使用到该指令的部分会替换该模板内容,所以该模板主要是html格式)
属性有两种形式:一段html文本、一个返回模板字符串的函数,并且该函数接收两个参数:tElement,tAttrs

 5:templateUrl:String/Function

当模板内容比较多时,直接嵌套在template中会显得冗余,可以采取将模板代码单独存放在一个文件中,这时就会需要引入文件,templateUrl便可以做到
属性也有两种形式:一个代表外部html文件路径的字符串、一个返回外部html文件路径字符串的函数,该函数接收两个参数:tElement,tAttrs 

6:replace:Boolean

该属性默认值为false,指明模板是会被当做子元素插入到调用该指令的元素内部,还是覆盖取代调用该指令的元素。
栗子:

//index.js
angular.module('myApp',[])
.directive('myDirective',function() {
  return {
    restrict: 'A',
    template: '<div>hello world</div>',
    replace: true/false
  };  
})
<!-- index.html -->
<my-directive></my-directive>

当repalce取false时,浏览器端源码呈现为<my-directive><div>hello world</div></my-directive>
取true时,呈现为<div>hello world</div>

7:transclude:Boolean

栗子:

<!-- index.html -->
<div my-directive>world</div>

像这个例子中,如果指令内部有内容,一般情况下template模板会直接覆盖替换掉该内容,但现在我想把它保留下来,这时transclude就派上用途了

//index.js
angular.module('myApp',[])
.dirctive('myDirective',function() {
  return {
    restrict: 'EA', 
    transclude: true,
    template: '<div>hello <span ng-transclude></span></div>'
  };
})

上面js代码会将html文件指令中包含的world内嵌到模板中span元素中,注意,span元素添加了ng-transclude内置指令属性(这点很重要)
总之,该属性的作用,是告诉angularjs编译器,将它从DOM元素中获取的内容放到它发现ng-transclude指令的地方.
以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
用js实现计算代码行数的简单方法附代码
Aug 13 Javascript
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
Mar 17 Javascript
jQuery取id有.的值的方法
May 21 Javascript
JavaScript中的普通函数与构造函数比较
Apr 07 Javascript
jquery实现动静态条形统计图
Aug 17 Javascript
基于Javascript实现返回顶部按钮
Feb 29 Javascript
vue从使用到源码实现教程详解
Sep 19 Javascript
webpack进阶——缓存与独立打包的用法
Aug 02 Javascript
jquery ajax异步提交表单数据的方法
Oct 27 jQuery
傻瓜式解读koa中间件处理模块koa-compose的使用
Oct 30 Javascript
js获取form表单中name属性的值
Feb 27 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
Jul 21 Javascript
Boostrap模态窗口的学习小结
Mar 28 #Javascript
理解javascript模块化
Mar 28 #Javascript
谈一谈jQuery核心架构设计
Mar 28 #Javascript
javascript函数自动执行常用方法汇总
Mar 28 #Javascript
JavaScript利用HTML DOM进行文档操作的方法
Mar 28 #Javascript
JavaScript常用本地对象小结
Mar 28 #Javascript
Bootstrap 粘页脚效果
Mar 28 #Javascript
You might like
PHP代码审核的详细介绍
2013/06/13 PHP
PHP数据过滤的方法
2013/10/30 PHP
PHP生成随机密码类分享
2014/06/25 PHP
PHP Cookie学习笔记
2016/08/23 PHP
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
解决js中window.open弹出的是上次的缓存页面问题
2013/12/29 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
详解JS面向对象编程
2016/01/24 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
浅谈struts1 &amp; jquery form 文件异步上传
2017/05/25 jQuery
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
python中ConfigParse模块的用法
2014/09/29 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
Python 切分数组实例解析
2019/11/07 Python
python修改文件内容的3种方法详解
2019/11/15 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
基于python实现操作git过程代码解析
2020/07/27 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
宿舍卫生检讨书
2014/01/16 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
小学音乐课教学反思
2016/02/18 职场文书
golang中的并发和并行
2021/05/08 Golang
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python