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 相关文章推荐
javaScript Array(数组)相关方法简述
Jul 25 Javascript
js异步加载的三种解决方案
Mar 04 Javascript
特殊情况下如何获取span里面的值
May 20 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
Dec 31 Javascript
JavaScript 学习笔记之语句
Jan 14 Javascript
javascript创建函数的20种方式汇总
Jun 23 Javascript
jquery实现倒计时功能
Dec 28 Javascript
jQuery控制frames及frame页面JS的方法
Mar 08 Javascript
JS &amp; JQuery 动态添加 select option
Jun 08 Javascript
微信小程序五星评分效果实现代码
Apr 06 Javascript
详解vue数据渲染出现闪烁问题
Jun 29 Javascript
在vue中使用Echarts画曲线图的示例
Oct 03 Javascript
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面向对象程序设计之接口用法
2014/08/20 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
可以文本显示的公告栏的js代码
2007/03/11 Javascript
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
javascript实现判断鼠标的状态
2015/07/10 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
从Python程序中访问Java类的简单示例
2015/04/20 Python
python打开文件并获取文件相关属性的方法
2015/04/23 Python
Python实现大文件排序的方法
2015/07/10 Python
全面了解python字符串和字典
2016/07/07 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
2017/11/08 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
2018/05/24 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
.NET概念性的面试题
2012/02/29 面试题
公司经营目标责任书
2015/01/29 职场文书
安全生产标语口号
2015/12/26 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis