AngularJS 指令中 scope 的 '@'、'=' 和 '&' 绑定模式详解

作者:资源驿站时间:2026-10-21 22:50:38浏览:267

本文深入解析 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 作用域绑定模式的实例详解,希望能为读者提供有价值的参考。如有任何疑问,欢迎留言交流,小编将及时回复。感谢大家的支持!

作者最新文章