angularjs速成学习个人理解_7指令Directives

来源:互联网 发布:龚琳娜 知乎 编辑:程序博客网 时间:2024/06/05 09:42

AngularJS 让我们可以继承HTML带有新的属性,这个功能叫做指令Directives
AngularJS 有一组内置的指令,可以为您的应用程序提供功能。
AngularJS 也让我们自定义自己的指令
AngularJS指令是用前缀ng的扩展HTML属性


通用的内置指令包括:
ng-app
ng-init
ng-bind
ng-controller
ng-model
ng-repeat
ng-click
ng-src
...

创建一个新的指令

新的指令用.directive function创建
当给一个directive,你必须用驼峰法命名(my test directive - myTestDirective)
但是当执行这个指令的时候,你必须用 特殊的名字 my-test-directive。
执行一个指令我们可以配置restrict如下:
 E:代表可以修饰元素名字
 A:代表可以修饰熟悉
 C:代表可以修饰类
 M:代表注释

 默认是 EA


我们来看一下代码js创建一个指令myTestDirective

var myApp = angular.module("myApp", []);myApp.directive("myTestDirective", function() {return {restrict: "A", //default: EA//replace: true, //false: 注释是不可见的template: "<h3>Hello Directive</h3>"};});

由于restrict:A是属性指令那么我们可以在html中引入

<div class="test-div"><p class="my-test-directive"></p></div>

template: "<h3>Hello Directive</h3>"为标签中显示的内容:如图:




整体代码如下:

<!DOCTYPE html><html ng-app="myApp"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /><title>Directive - AngularJS Test</title><style type="text/css">.test-div {margin:15px;padding:15px;border:1px solid #ccc;}</style></head><body><div class="test-div"><ul ng-init="users=[{firstName:'Neo',lastName:'Huang'},{firstName:'Shelly',lastName:'Lee'}]"><li ng-repeat="user in users"><p ng-if="$even" style="color:red;">{{$index+1}} : {{user.firstName + " " + user.lastName}}</p><p ng-if="$odd" style="color:blue;">{{$index+1}} : {{user.firstName + " " + user.lastName}}</p></li></ul></div><div class="test-div"><my-test-directive></my-test-directive></div><div class="test-div"><p my-test-directive></p></div><div class="test-div"><p class="my-test-directive"></p></div><div class="test-div"><!-- directive: my-test-directive --></div><script type="text/javascript" src="static/js/angular-1.5.8.js"></script><script type="text/javascript">var myApp = angular.module("myApp", []);myApp.directive("myTestDirective", function() {return {restrict: "A", //default: EA//replace: true, //false: 注释是不可见的template: "<h3>Hello Directive</h3>"};});</script></body></html> 

原创粉丝点击