学习AngularJs:Directive指令用法(完整版)
本教程使用AngularJs版本:1.5.3 AngularJs GitHub: https://github.com/angular/angular.js/ AngularJs下载地址:https://angularjs.org/ 摘要:Directive(指令)笔者认为是AngularJ非常强大而有有用的功能之一。它就相当于为我们写了公共的自定义DOM元素或CLASS属性或ATTR属性,并且它不只是单单如此,你还可以在它的基础上来操作scope、绑定事件、更改样式等。通过这个Directive,我们可以封装很多公共指令,比如分页指令、自动补全指令等等。然后在HTML页面里只需要简单的写一行代码就可以实现很多强大的功能。一般情况下,需要用Directive有下面的情景: 一、Directive的定义及其使用方法 angular.module("app",[]).directive("directiveName",function(){ return{ //通过设置项来定义 }; }) Directive可以放置于元素名、属性、class、注释中。下面是引用myDir这个directive的等价方式。(但很多directive都限制为“属性”的使用方式) lt;span lt;span style="font-family: Arial, Helvetica, sans-serif;"gt;directive-namelt;/spangt;lt;span style="font-family: Arial, Helvetica, sans-serif;"gt;="exp"gt;lt;/spangt;//属性lt;/spangt; lt;span class="lt;span style="font-family: Arial, Helvetica, sans-serif;"gt;directive-namelt;/spangt;: exp;"gt;lt;/spangt;//class lt;lt;span style="font-family: Arial, Helvetica, sans-serif;"gt;directive-namelt;/spangt;gt;lt;/lt;span style="font-family: Arial, Helvetica, sans-serif;"gt;directive-namelt;/spangt;gt;//元素 lt;!-- directive: lt;span style="font-family: Arial, Helvetica, sans-serif;"gt;directive-name lt;/spangt;lt;span style="font-family: Arial, Helvetica, sans-serif;"gt;exp --gt;//注释lt;/spangt; 如下一个实例 : lt;!DOCTYPE htmlgt; lt;html lang="zh" ng-app="myApp"gt; lt;headgt; lt;meta charset="UTF-8"gt; lt;titlegt;AngularJS入门学习lt;/titlegt; lt;script type="text/javascript" src="./1.5.3/angular.min.js"gt;lt;/scriptgt; lt;/headgt; lt;bodygt; lt;hello-worldgt;lt;/hello-worldgt; lt;/bodygt; lt;script type="text/javascript"gt; var app = angular.module('myApp', []); app.directive('helloWorld', function() { return { restrict: 'E', template: 'lt;divgt;Hi 我是林炳文~~~lt;/divgt;', replace: true }; }); lt;/scriptgt; lt;/htmlgt; 结果:
下面是一个directive的详细版 var myModule = angular.module(...); myModule.directive('directiveName', function factory(injectables) { var directiveDefinitionObject = { priority: 0, template: 'lt;divgt;lt;/divgt;', templateUrl: 'directive.html', replace: false, transclude: false, restrict: 'A', scope: false, compile: function compile(tElement, tAttrs, transclude) { return { pre: function preLink(scope, iElement, iAttrs, controller) { ... }, post: function postLink(scope, iElement, iAttrs, controller) { ... } } }, link: function postLink(scope, iElement, iAttrs) { ... } }; return directiveDefinitionObject; }); 二、Directive指令内容解读 3.terminal 4.template(字符串或者函数)可选参数,可以是: lt;!DOCTYPE htmlgt; lt;html lang="zh" ng-app="myApp"gt; lt;headgt; lt;meta charset="UTF-8"gt; lt;titlegt;AngularJS入门学习lt;/titlegt; lt;script type="text/javascript" src="./1.5.3/angular.min.js"gt;lt;/scriptgt; lt;/headgt; lt;bodygt; lt;hello-worldgt;lt;/hello-worldgt; lt;/bodygt; lt;script type="text/javascript"gt; var app = angular.module('myApp', []); app.directive('helloWorld', function() { return { restrict: 'E', template: 'lt;divgt;lt;h1gt;Hi 我是林炳文~~~lt;/h1gt;lt;/divgt;', replace: true }; }); lt;/scriptgt; lt;/htmlgt; (编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |