angularjs学习之六(angularjs中directive指令的一般编程事件绑定 模板使用等)

angular js 中模板的使用,事件绑定以及指令与指令之间的交互

对应教学视频地址(需翻墙):angularjs教学视频

<!doctype html>
<html ng-app="myapp">
	<head>
		<meta charset="utf-8"/>
	</head>
	<body ng-controller="ShieldController">
		<div>
			<who></who>
		</div>
		<div>
		   <button you-btn></button>
		</div>
        <theshield reigns>343</theshield>
		<theshield reigns>fdhg</theshield>
		<theshield rollins>hhh</theshield>
		<theshield ambros>kkk</theshield>
	</body>
	<script src="./js/angular.min.js"></script>
	<script>
	   var app = angular.module('myapp',[]);

	   /*=======================1. 模板的使用 ========================*/
	   app.directive('who',function(){
	       return {
			   restrict:"E",              //元素element 的意思
			   link:function(scope,element,attrs){
				   console.log(element);
				   element[0].innerHTML = 'sdfhkj'; //这个优先级别最高
			   },
			   //templateUrl:"param.html", //这个不显示 优先级别最低
			   template:"<h1>jkdhf</h1>" //这个显示  优先级别其次
		   };
	   });

       /*=======================2. 事件的绑定 ========================*/
	   app.directive('youBtn',function(){
	       return {
			   restrict:"A", //attribute 属性的意思
			   link:function(scope,element,attrs){
                   console.log(element);
				   element[0].innerHTML = 'my btn';
				   //事件绑定
				   element.bind('mouseenter',function(){
					   element[0].innerHTML = 'your btn';
				   });
				   element.bind('mouseleave',function(){
					   element[0].innerHTML = 'her btn';
				   });
			   }
		   };
	   });

       /*=======================3. 元素 属性 控制器之间的交互========================*/

	   app.controller('ShieldController',function($scope){
	       $scope.shieldNames = [];
		   this.addReigns = function(){
		       $scope.shieldNames.push("reigns:jjj");
		   }
		   this.addRollins = function(){
		       $scope.shieldNames.push("Rollins:hhh");
		   }
		   this.addAmbros = function(){
		       $scope.shieldNames.push("Ambros:ggg");
		   }
	   })
	   .directive('reigns',function(){
	      return {
			  require:"theshield",
			  link:function(scope,element,attrs,ShieldController){
                 ShieldController.addReigns();
			  }
		  };
	   })
	   .directive('rollins',function(){
	      return {
			  require:"theshield",
			  link:function(scope,element,attrs,ShieldController){
                 ShieldController.addRollins();
			  }
		  };
	   })
	   .directive('ambros',function(){
	      return {
			  require:"theshield",
			  link:function(scope,element,attrs,ShieldController){
                 ShieldController.addAmbros();
			  }
		  };
	   })
	   .directive('theshield',function(){
	       return {
			   restrict:"E",
			   controller:"ShieldController", //指定控制器
			   scope:{},                      //清空该指令处的$scope 值
			   link:function(scope,element,attrs){
			       element.bind('mouseenter',function(){  //对于该指令所对应的元素绑定对应的事件
				       console.log(scope.shieldNames);
				   });
			   }
		   };
	   });

	</script>
</html>

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-17 07:05:26

angularjs学习之六(angularjs中directive指令的一般编程事件绑定 模板使用等)的相关文章

MVVM设计模式和在WPF中的实现(四) 事件绑定

系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中的实现(三)命令绑定 MVVM模式解析和在WPF中的实现(四)事件绑定 MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信 MVVM模式解析和在WPF中的实现(六)用依赖注入的方式配置ViewModel并注册消息 0x00 为什么要事件绑定 这个问题其实是很好理解的,因为事件是丰富多样的,单纯的命令绑定远不能覆盖所有的事件.例

AngularJS学习笔记(六)---指令

AngularJS四大核心特性-指令 在之前的内容中提到AngularJS的四个核心的特性是以下四点: MVC 模块化和依赖注入 双向数据绑定 指令 指令模块 在指令这个模块中主要讲述指令的使用以及原理,内容包括: 解析最简单的指令hello:匹配模式restrict 解析最简单的指令hello:template.templateUrl.$templateCache 解析最简单的指令hello:replace与transclude comile与link(操作元素.天剑CSS样式.绑定事件) 指

angularjs学习笔记3-directive中scope的绑定修饰符

在angularjs中,一个directive返回一个对象,对象存在很多属性,并且可以在directive中自定义自己的scope,而使用自己的scope是为了防止一个directive被使用在多个地方之间发生相互影响,通常这个scope可以被定义为true或者对象,当这个scope被定义为true时,代表这个指令拥有独立的scope,它被多次使用在多个地方之间不会相互影响,例如: HTML代码 <!doctype html> <html ng-app="MyModule&qu

《AngularJS权威教程》中关于指令双向数据绑定的理解

在<AngularJS权威教程>中,自定义指令和DOM双向数据绑定有一个在线demo,网址:http://jsbin.com/IteNita/1/edit?html,js,output,具体代码如下: <!doctype html> <html ng-app="myApp"> <head> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-

angularjs学习总结一(表达式、指令、模型)

一:自执行匿名函数 (function(){ /*code*/})();自执行匿名函数:常见格式:(function() { /* code */ })();解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括号内为匿名函数的参数.作用:可以用它创建命名空间,只要把自己所有的代码都写在这个特殊的函数包装内,那么外部就不能访问,除非你允许(变量前加上window,这样该函数或变量就成为全局).各JavaScript库的代码也基本是

Angularjs学习---ubuntu12.04中karma安装配置中常见的问题总结

karma启动时出现了很多问题: 1.安装karma前提条件 安装karma首先要安装nodejs,npm然后才可以安装karma.nodejs,npm的安装过程可以参考文章:Angularjs学习---angularjs环境搭建,ubuntu 12.04下安装nodejs.npm和karma 2.安装karma步骤 karma官方指导教程:http://karma-runner.github.io/0.12/intro/installation.html 1).首先执行下面命令: npm in

AngularJS中Directive指令系列 - bindToController属性的使用

默认false.这个属性用来绑定scope的属性直接赋给controller.可以为true或者和scope相同格式的对象. 此外使用此属性,要设置controller的别名,通常通过"controllerAs"来设置. 如果一个directive里同时使用了bindToController和scope,并且是object.那么bindToController会覆盖scope.

angularjs学习系(3)指令的@=&amp;

1:先说指令域scope的@ 我觉得描述很费劲,直接用代码来阐述: angularjs.html <!doctype html> <html ng-app='myApp'> <head> </head> <body> <div ng-controller="listCtrl"> <input type="text" ng-model="t" /> <kid

【踩坑】angularJS 1.X版本中 ng-bind 指令多空格展示

做项目的时候遇到的问题 1.问题描述 用户在表单某个值输入多个空格,例如:A     B,保存至服务器 在列表查询页面中使用bg-bind的指令单向绑定,结果展示位A B,连续的空格被替换为单个空格 2.定位分析 2.1 从用户输入到最终查询展示经理太多环节,可能转换的地方有:  输入时的事件中,请求服务器前,http传输,服务器接收解析,服务器处理,服务器保存至数据库,数据库查询服务,查询服务返回,界面展示 因此逆向定位问题好些 通过Chrome中network看到服务器返回的数据带有多个空格