AngularJS 指令中 scope 的 '@'、'=' 和 '&' 绑定模式详解
本文深入解析 AngularJS 指令中 scope 对象的三种核心绑定模式:'@'、'=' 和 '&'。通过具体实例代码,详细阐述单向字符串绑定、双向数据绑定以及父作用域函数调用的实现机制与区别,帮助开发者正确理解并应用作用域隔离技术。
AngularJS 作用域基础概念
作用域(scope)是 AngularJS 中的核心概念,它代表了应用模型的一个对象,同时也是表达式执行的上下文环境。
在 AngularJS 架构中,作用域形成了一种层级结构,这种结构与 DOM 树的层级基本保持一致。作用域的主要职责包括监控表达式的变化以及传递事件。
当 HTML 代码中定义了 ng-app 指令时,系统会自动生成一个根作用域($rootScope)。这个根作用域具有特殊性,它是所有其他 $scope 对象的顶层父级。
除了 ng-app 指令会生成根作用域外,其他指令如 ng-controller、ng-repeat 等也会创建各自的作用域。此外,AngularJS 提供的工厂方法也能用于创建作用域。这些新创建的作用域均拥有自己的继承上下文,且其根节点均为 $rootScope。
在生成作用域后,$scope 对象即代表该作用域的数据实体。开发者可以在 $scope 中定义各种数据类型,随后在 HTML 模板中通过 {{变量名}} 的语法直接访问这些变量。
scope 绑定模式实例解析
接下来,将通过具体的代码实例,详细介绍 AngularJS 指令中 scope 绑定的 '@'、'=' 和 '&' 三种模式的具体用法。
<!doctype html>
<html ng-app='myApp'>
<head>
</head>
<body>
<script src="http://cdn.bootcss.com/angular.js/1.4.6/angular.js"></script>
<script src="https://cdn.bootcss.com/jquery/1.8.3/jquery.js"></script>
<div ng-controller="listCtrl" ng-app="myApp">
<input type="text" ng-model="color">
<!-- <span kid hd-color="color"></span> --> <!--@是单项数据绑定,hd-color="{{color}}"作用域隔离,在view中是以模板“{{}}”的形式;=双向绑定,hd-color="color",在view中直接以属性的形式出现-->
<div kid color="callback()"></div>
</div>
<script type="text/javascript">
var myApp=angular.module('myApp',[]);
myApp.controller('listCtrl',function($scope){
$scope.color="red";
$scope.callback=function(){
return 'a web developer !';
}
});
myApp.directive('kid',function(){
return {
restrict:'AE',
//template:'<div style="color:{{color}}">@符号的学习</div>' ,
template:'<h1>{{color()}}</h1>',
scope:{ /*color:"=hdColor"*//* "@hdColor" */color:'&'} //通过&属性名来调用控制器的函数
}
});
</script>
</div>
</body>
</html>
以上是对 AngularJS 作用域绑定模式的实例详解,希望能为读者提供有价值的参考。如有任何疑问,欢迎留言交流,小编将及时回复。感谢大家的支持!
JS中使用位运算(~~)和一元加号(+)快速转换字符串为整数
2026-11-03 22:41:12
怎么使用命令行批量格式化项目中的JS文件
2026-11-03 19:04:42
JS代码美化后报错怎么办?常见格式化冲突解决方法
2026-11-03 18:47:01
不用moment.js,怎么用原生JS Intl API格式化时间戳
2026-11-03 18:10:30
原生JS与dayjs获取当前日期的代码对比
2026-11-03 17:57:26
