angularJs自定义指令的三种绑定策略

13 篇文章 0 订阅

angularJs中指令scope隔离域中有3种绑定策略:

.directive("test",function(){
     return {
         scope:{                    
                title:"@",           
                name:"=",            
                changeName:"&"        
         }
  }
})

出现了scope就表示这个指令的scope是独立的,但如果要与外界联系,就要使用绑定策略
使用@符号可将本地作用域的变量与DOM属性的值进行绑定,即我们通过@得到title属性的值
使用=符号可将本地作用域上的属性与父级作用域上的属性进行双向绑定,即我们通过=得到name的引用。可以同值传递和引用传递的理解相结合
使用&符号可以对父级作用域进行绑定,以便在其中运行函数,简单说就是绑定函数用的
实例:

HTML代码

<!doctype html>
<html ng-app="myApp">
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  <script src="lib/angular/angular.js"></script>
  <script src="js/run.js"></script>
</head>
<body ng-controller='BodyController'>
  <div ng-controller='SomeController'>
  	{{someBareValue}}
  	<button ng-click='someAction()'>Communicate to child</button>
  	<div ng-controller='ChildController'>
  		{{someBareValue}}
  		<button ng-click='childAction'>Communicate to parent</button>
  	</div>
  </div>
  <input type="text" ng-model='user'/></br>
  <div scope-example user-data-name="user" on-send='sendMail(email)' from-name={{name}}></div>
</body>
</html>


JS代码(run.js)

angular.module("myApp",[])
	.controller("BodyController",function($scope,$timeout,$interval){
		$scope.name = "黄小明";
		$scope.user = "李四";
		var i=0;
		var timer = $interval(function(){
			i++;
			$scope.name = "黄大明";
			$scope.user = "李四" + i;
			
			if(i==4){
				$interval.cancel(timer);
			}
		},2000);

		$scope.sendMail = function(email){
			console.log(email)
			alert(email.email)
		}
	})
	.controller("SomeController",function($scope){
		$scope.someBareValue = "黄小明";
		$scope.someAction = function(){
			$scope.someBareValue = "你好呀黄大明";
		}
	})
	.controller("ChildController",function($scope){
		$scope.childAction = function(){
			$scope.someBareValue = "这是点击controller的孩子";
		}
	})
	.directive("scopeExample",function(){
		return {
			restrict: "EA",
			scope: {
				userDataName: "=userDataName",
				onSend: "&onSend",
				fromName: "@fromName"
			},
			template: '<div ng-click="test()">Now you should show email fromName={{fromname}}</div></br><input ng-model="userDataName"/></br><p>这是从父级获取到的{{userDataName}}</p>',
			link: function(scope, element, attrs) {
				// scope.userDataName = {
				// 	name: "李四"+i
				// };
			
				scope.fromname = scope.fromName;
				scope.test = function(){
					scope.onSend({"email":{"email":"251813997@qq.com"}});
				}

			}
		};
	});


 运行结果图片如下:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当然!以下是一个简单的AngularJS教程: AngularJS是一个JavaScript框架,用于构建动态网页应用程序。它由Google开发,并提供了一种有效的方式来开发单页应用程序。 以下是一些AngularJS的基本概念和特性: 1. 指令(Directives):AngularJS通过指令扩展了HTML,使其具有动态功能。指令可以用于创建自定义HTML元素、属性和CSS类等。 2. 数据绑定(Data Binding):AngularJS提供了双向数据绑定功能,可以将数据模型与视图同步更新。这意味着当数据发生变化时,视图会自动更新,反之亦然。 3. 控制器(Controllers):控制器用于处理业务逻辑和数据模型。它们连接视图和模型之间的交互,并提供方法和属性供视图使用。 4. 服务(Services):服务是一些可复用的组件,用于执行特定的任务。它们可以被控制器、指令和其他服务调用。 5. 依赖注入(Dependency Injection):AngularJS使用依赖注入来管理组件之间的依赖关系。这样可以更好地组织代码,并使测试更加容易。 要开始学习AngularJS,你可以按照以下步骤进行: 1. 首先,在你的项目中引入AngularJS库文件。你可以从官方网站下载最新版本的AngularJS。 2. 然后,在HTML文件中添加ng-app指令,它会告诉AngularJS应用程序从哪个元素开始。 3. 创建一个控制器,用于处理业务逻辑。你可以使用ng-controller指令将控制器绑定到HTML元素上。 4. 在控制器中定义数据模型和方法。这些数据和方法将被视图使用。 5. 在HTML文件中使用指令和数据绑定来创建动态内容。你可以使用ng-bind指令将数据绑定到HTML元素上。 6. 最后,运行应用程序并查看结果。 这只是一个简单的AngularJS教程,希望能够帮助你入门。如果你想深入学习AngularJS,请参考官方文档和其他在线教程。祝你学习愉快!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值