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代码
Aug 13 Javascript
jquery 鼠标滑动显示详情应用示例
Jan 24 Javascript
iframe中子父类窗口调用JS的方法及注意事项
Aug 25 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
Apr 07 Javascript
值得分享的bootstrap table实例
Sep 22 Javascript
vue中如何引入jQuery和Bootstrap
Apr 10 jQuery
ionic+AngularJs实现获取验证码倒计时按钮
Apr 22 Javascript
微信小程序自定义tab实现多层tab嵌套功能
Jun 15 Javascript
Vue+webpack+Element 兼容问题总结(小结)
Aug 16 Javascript
JS中DOM元素的attribute与property属性示例详解
Sep 04 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
Feb 16 Javascript
vue中watch和computed的区别与使用方法
Aug 23 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
乱谈我对耳机、音箱的感受
2021/03/02 无线电
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
2016/05/28 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
利用js canvas实现五子棋游戏
2020/10/11 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
夏季奶茶店创业计划书
2014/01/16 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
校庆口号
2014/06/20 职场文书
学生吸烟检讨书
2014/09/14 职场文书
研究生简历自我评
2015/03/11 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL