前言:

  前面写的有些乱,并且有些罗嗦,以后会注意的。希望我写的文章能帮助大家。

1,什么是指令

  简单的说,指令是angularjs在html页面中建立一套自己能识别的标签元素、属性、类和注释,用来达到功能复用的目的。

2,创建指令

<!DOCTYPE html>
<html ng-app="MyModule">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<!-- 指令的第一种模式 E -->
<hello></hello> <!-- 指令的第二种模式 A -->
<div hello></div> <!-- 指令的第三种模式 C -->
<div class="hello"></div> <!-- 指令的第四种模式 M--> <!-- directive:hello -->
<div></div> <script src="js/angular-1.3.0.js"></script>
<script src="js/hello.js"></script>
</body>
</html>

从上面的代码可以看出,指令有四种创建方式,上面的四种模式对应下面js代码中 restrict属性AEMC。

var myModule = angular.module("MyModule",[]);

//创建指令
myModule.directive('hello',function(){
return{
restrict:'AEMC', // 匹配模式 A:属性 E:元素 M:注释 C:Class
template:'<div>hello world</div>',
replace:true
}
})

可以自己动手创建。

3,指令--restrict

 restrict意思是约束,限定的意思,在此就是限定这个指令可用的四种匹配模式。

 这么多模式,我们该在什么场景下用呢?

  • A:属性指令,如果想在已有的标签再添加指令,推荐使用这个方式。
  • E:元素指令,官方推荐属性,可以自定义标签显示。
  • M:注释指令,一般不使用,容易删除。别人不好理解。
  • C:样式类指令,一般不使用,容易误解。

4,指令--template

  模板(代码片段)的使用我们有4中方式。

  •   template:'<div>hello world</div>',把代码片段直接复制给模板属性
  • templateUrl:'tmpl/hello.html',引用外部文件,当你的模板有很多代码的时候使用。
  • template:$templateCache.get('hello.html'),使用模板缓存,这个方法解决一个模板复用的情况,hello.html是一个虚拟的文件,可不建立
  • 模板可以为空,直接在 html文件里面写 <hello>hello</hello>
// 注射器加载所有模块时,此方法执行一次,缓存模板
myModule.run(function($templateCache){
// console.log("323"); html文件是虚拟的,可以任意起名字
$templateCache.put('hellos.html',"<div>hello everyone..</div>")
})
myModule.directive('hello',function($templateCache){
return{
restrict:'AECM',
template:$templateCache.get('hellos.html'),
replace:true
}
})

5,指令--replace

  replace意思替换,代替的意思。如果进行指令嵌套的时候,需要改变下。

html:

    <hello>
<div>nihao</div>
</hello>

js:

myModule.directive('hello',function(){
return{
restrict:'AE',
transclude:true,
template:'<div>hello everyone <div ng-transclude></div></div>',
}
})

在这里使用了 ng-transclude 方法,这个方法的作用是让angularjs把指令嵌套的内容放到 带有ng-transclude属性的标签中去。

6,指令--compile(编译阶段)

angularjs默认的函数,我们可以自定义该函数,当指令dome变化完毕就会执行。

7,指令--link(链接阶段)

在link函数里面可以给元素绑定事件。

8,总结

  关于指令的其他属性和方法,需要大家到官网去找自己看。我这边也会把这节代码上传到我的github(https://github.com/NIKing/angularJs.git)上。

  

AngularJs-指令1的更多相关文章

  1. AngularJS指令

    1. AngularJS指令的特点: AngularJS通过被称为指令的新属性来扩展HTML,指令的前缀为ng-. AngularJS通过内置的指令来为应用添加功能. AngularJS允许你自定义指 ...

  2. angularjs指令参数transclude

    angularjs指令参数transclude transclude翻译为嵌入,和之前看到的vue中的slots作用差不多,目的是将指令元素的子内容嵌入到指令的模板中 定义指令 <div sid ...

  3. angularjs 指令—— 绑定策略(@、=、&)

    angularjs 指令—— 绑定策略(@.=.&) 引入主题背景:angular 的指令配置中的template可以直接使用硬编码写相应的代码,不过也可以根据变量,进行动态更新.那么需要用到 ...

  4. AngularJS 指令

    AngularJS 指令 AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-. ng-app 指令 ng-app 指令定义了 AngularJS 应用程序的 根元素. ng-app 指 ...

  5. angularjs指令(二)

    最近学习了下angularjs指令的相关知识,也参考了前人的一些文章,在此总结下. 欢迎批评指出错误的地方.   Angularjs指令定义的API AngularJs的指令定义大致如下 angula ...

  6. angularJs指令执行的机制==大概的三个阶段

    第一阶段:加载阶段 angularJs要运行的话,需要去等待angular.js加载完成,加载完之后呢,angular就会去查找到ng-app这个指令,ng-app在每个应用里面只能出现一次, 它也就 ...

  7. AngularJS学习笔记二:AngularJS指令

    AngularJS 指令: AngularJS 通过被称为 指令 的新属性来扩展 HTML. AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-. 几个常用 指令: ng-app 指令 ...

  8. AngularJs指令(一)

    AngularJs应用现在越来越流行了,谷歌都与微软合作支持AngularJS2.0,这是要逆天了,说明AngularJs将来大势所趋.最近想跳槽,又重新拾起了AngluarJs(之前由于缺少项目应用 ...

  9. 【转】angularjs指令中的compile与link函数详解

    这篇文章主要介绍了angularjs指令中的compile与link函数详解,本文同时诉大家complie,pre-link,post-link的用法与区别等内容,需要的朋友可以参考下   通常大家在 ...

  10. AngularJS指令进阶 – ngModelController详解

    AngularJS指令进阶 – ngModelController详解 在自定义Angular指令时,其中有一个叫做require的字段,这个字段的作用是用于指令之间的相互交流.举个简单的例子,假如我 ...

随机推荐

  1. git一些常用设置

    用法:git config [选项] 配置文件位置    --global              使用全局配置文件    --system              使用系统级配置文件    -- ...

  2. android ndk编译x264开源(用于android的ffmpeg中进行软编码)

    http://blog.csdn.net/u012917616/article/details/40921833 不废话,直接上.sh脚本: export NDK=/home/xxx/my_softw ...

  3. Sample MultipleFileWordcount CombineFileInputFormat

    在旧版本的samples中,使用的是旧的api,mapred下面的MultiFileInputFormat,现在已经过时. 现在推荐使用mapreduce下面的CombineInputFormat来处 ...

  4. 九度OJ,题目1089:数字反转

    题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...

  5. POJ 1556 The Doors --几何,最短路

    题意: 给一个正方形,从左边界的中点走到右边界的中点,中间有一些墙,问最短的距离是多少. 解法: 将起点,终点和所有墙的接触到空地的点存下来,然后两两之间如果没有线段(墙)阻隔,就建边,最后跑一个最短 ...

  6. 用uGUI开发自定义Toggle Slider控件

    一.前言 写完<Unity4.6新UI系统初探>后,我模仿手机上的UI分别用uGui和NGUI做了一个仅用作演示的ToggleSlider,我认为这个小小的控件已能体现自定义控件的开发过程 ...

  7. mysql查询语句包含有关键字

    查询mysql的时候,有时候mysql表名或者列名会有关键字.这时候查询会有错误.例如表名是order,查询时候会出错. 简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别,例如se ...

  8. 安装StarUML 及使用时序图(Sequence Diagram)和用例图(use case diagram)

    时序图 用例图

  9. java 20 - 6 加入了异常处理的字节输出流的操作

    昨天坐了十几个钟的车回家,累弊了.... ————————————割掉疲劳————————————— 前面的字节输出流都是抛出了异常不管,这次的加入了异常处理: 首先还是创建一个字节输出流对象,先给它 ...

  10. mysqli事务处理demo

    <?php  $mysqli=new mysqli("localhost", "root", "123456", "xsph ...