AngularJS 自定义指令详解及示例代码


Posted in Javascript onAugust 17, 2016

自定义指令中使用AngularJS扩展HTML的功能。自定义指令使用的“指令”的功能定义。自定义指令只是替换了它被激活的元素。引导过程中AngularJS应用程序找到了匹配的元素,并做好使用自定义指令compile()方法一次活动再处理使用基于指令的范围自定义指令link()方法的元素。 AngularJS提供支持,以下列元素的类型来创建自定义指令。

Element directives - 指令遇到时激活一个匹配的元素。

Attribute - - 指令遇到时激活一个匹配的属性。

CSS - - 指令遇到时激活匹配CSS样式。

Comment - - 指令遇到时激活匹配的注释。

了解自定义指令

定义自定义的HTML标签。

<student name="Mahesh"></student><br/>
<student name="Piyush"></student>

定义自定义指令来处理上面的自定义HTML标签。

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

//Create a directive, first parameter is the html element to be attached.	 
//We are attaching student html tag. 
//This directive will be activated as soon as any student element is encountered in html
mainApp.directive('student', function() {
 //define the directive object
 var directive = {};
 //restrict = E, signifies that directive is Element directive
 directive.restrict = 'E';
 //template replaces the complete element with its text. 
 directive.template = "Student: <b>{{student.name}}</b> , Roll No: <b>{{student.rollno}}</b>";
 //scope is used to distinguish each student element based on criteria.
 directive.scope = {
  student : "=name"
 }
 //compile is called during application initialization. AngularJS calls it once when html page is loaded.
 directive.compile = function(element, attributes) {
  element.css("border", "1px solid #cccccc");
	 //linkFunction is linked with each element with scope to get the element specific data.
  var linkFunction = function($scope, element, attributes) {
   element.html("Student: <b>"+$scope.student.name +"</b> , Roll No: <b>"+$scope.student.rollno+"</b><br/>");
   element.css("background-color", "#ff00ff");
  }
  return linkFunction;
 }
 return directive;
});

定义控制器以更新范围为指令。在这里,我们使用name属性值作为子的作用域。

mainApp.controller('StudentController', function($scope) {
  $scope.Mahesh = {};
  $scope.Mahesh.name = "Mahesh Parashar";
  $scope.Mahesh.rollno = 1;

  $scope.Piyush = {};
  $scope.Piyush.name = "Piyush Parashar";
  $scope.Piyush.rollno = 2;
});

例子

<html>
<head>
 <title>Angular JS Custom Directives</title>
</head>
<body>
 <h2>AngularJS Sample Application</h2>
 <div ng-app="mainApp" ng-controller="StudentController">
		<student name="Mahesh"></student><br/>
		<student name="Piyush"></student>
 </div>
 <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
 <script>
  var mainApp = angular.module("mainApp", []);
	 
  mainApp.directive('student', function() {
   var directive = {};
   directive.restrict = 'E';
   directive.template = "Student: <b>{{student.name}}</b> , Roll No: <b>{{student.rollno}}</b>";
   
   directive.scope = {
   student : "=name"
   }
		 
   directive.compile = function(element, attributes) {
   element.css("border", "1px solid #cccccc");

   var linkFunction = function($scope, element, attributes) {
    element.html("Student: <b>"+$scope.student.name +"</b> , Roll No: <b>"+$scope.student.rollno+"</b><br/>");
    element.css("background-color", "#ff00ff");
   }

   return linkFunction;
   }

   return directive;
  });
	 
  mainApp.controller('StudentController', function($scope) {
   $scope.Mahesh = {};
   $scope.Mahesh.name = "Mahesh Parashar";
   $scope.Mahesh.rollno = 1;

   $scope.Piyush = {};
   $scope.Piyush.name = "Piyush Parashar";
   $scope.Piyush.rollno = 2;
  });
  
 </script>
</body>
</html>

结果

在Web浏览器中打开textAngularJS.html。看到结果如下:

AngularJS 自定义指令详解及示例代码

以上就是对AngularJS的自定义指令资料整理,后续继续补充,谢谢大家对本站的支持!

Javascript 相关文章推荐
Ctrl+Enter提交内容信息
Jun 26 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
Oct 20 Javascript
Jquery中children与find之间的区别详细解析
Nov 29 Javascript
jquery实现简单实用的打分程序实例
Jul 23 Javascript
jQuery中text() val()和html()的区别实例详解
Jun 28 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
Jul 01 Javascript
js验证手机号、密码、短信验证码代码工具类
Jun 24 Javascript
element ui table 增加筛选的方法示例
Nov 02 Javascript
javascript异步处理与Jquery deferred对象用法总结
Jun 04 jQuery
jQuery层叠选择器用法实例分析
Jun 28 jQuery
angularjs1.X 重构controller 的方法小结
Aug 15 Javascript
Vue包大小优化的实现(从1.72M到94K)
Feb 18 Vue.js
AngularJS 依赖注入详解及示例代码
Aug 17 #Javascript
AngularJS 服务详细讲解及示例代码
Aug 17 #Javascript
深入理解jQuery layui分页控件的使用
Aug 17 #Javascript
AngularJS 作用域详解及示例代码
Aug 17 #Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
Aug 17 #Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
Aug 17 #Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
Aug 17 #Javascript
You might like
php提示undefined index的几种解决方法
2012/05/21 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
php实现微信扫码支付
2017/03/26 PHP
Laravel如何友好的修改.env配置文件详解
2017/06/07 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
2016/01/08 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
Javascript操作dom对象之select全面解析
2017/04/24 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
Python脚本实现集群检测和管理功能
2015/03/06 Python
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
Django CBV类的用法详解
2019/07/26 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
毕业生的自我评价范文
2013/12/31 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
金融与证券专业求职信
2014/06/22 职场文书
灵山大佛导游词
2015/02/04 职场文书
员工聘用合同范本
2015/09/21 职场文书
禁毒心得体会范文
2016/01/15 职场文书
送给客户微信问候语!
2019/07/04 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers