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 web页面刷新的方法收集
Jul 02 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
Apr 23 Javascript
理解javascript中DOM事件
Dec 25 Javascript
对vue.js中this.$emit的深入理解
Feb 23 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
Aug 17 Javascript
在Vant的基础上封装下拉日期控件的代码示例
Dec 05 Javascript
ES6基础之解构赋值(destructuring assignment)
Feb 21 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
Apr 15 Javascript
微信小程序下拉框搜索功能的实现方法
Jul 31 Javascript
vue配置nprogress实现页面顶部进度条
Sep 21 Javascript
JavaScript数组排序功能简单实现
May 14 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
Aug 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统一页面编码避免乱码问题
2015/04/09 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
php中namespace及use用法分析
2016/12/06 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
prototype 中文参数乱码解决方案
2009/11/09 Javascript
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
2015/03/19 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
python中的变量如何开辟内存
2018/06/26 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
python 读取数据库并绘图的实例
2019/12/03 Python
python实现TCP文件传输
2020/03/20 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
CSS3,线性渐变(linear-gradient)的使用总结
2017/01/09 HTML / CSS
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
结构工程个人自荐信范文
2013/11/30 职场文书
自强之星事迹材料
2014/05/12 职场文书
领导欢迎词致辞
2015/01/23 职场文书
特岗教师个人总结
2015/02/10 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
Dashboard管理Kubernetes集群与API访问配置
2022/04/01 Servers