更新时间:2023-07-26 来源:黑马程序员 浏览量:
通常来说,一段程序代码中所用到的名称(如属性名、函数名)并不总是有效的,而限定该名称可用性的代码范围就是该名称的作用域。作用域的使用可提高程序逻辑的局部性,增强程序的可靠性,减少命名冲突。
Angular的作用域就是一个“数据仓库”,由基本的JavaScript对象组成。作用域中有可用的属性和函数,这些属性和函数可以在视图和控制器中使用。作用域有层次结构,这个层次结构与相关联的DOM结构相对应。
在AngularJS中,作用域($scope)是控制器回调函数的参数,当一个控制器被定义时,就产生了一个作用域。
接下来通过一个案例来演示如何在AngularJS作用域中定义属性和函数,代码见如下demo。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> AngularJS 作用域 </title> </meta> </head> <body> <!--绑定模块和控制器--> <div ng-app="myApp" ng-controller="MainController"> <input ng-model="name"> <h1> {{welcome}} </h1> <button ng-click="say()"> 登录 </button> <p> 单击按钮调用作用域中定义的say()函数 </p> </input> </div> <script src="lib/angular.js"> </script> <script> //定义模块 var app=angular.module('myApp', []); //定义控制器 app.controller ('MainController', function ($scope) { //定义属性 name $scope.name="lucy"; //定义函数say() $scope.say=function() { $scope.welcome='welcome:'+$scope.name+'!'; }; }): </script> </body> </html>
在上述代码中,第21行定义了name属性;第23行定义了say()函数,当say()函数被调用时,会在作用域中定义welcome属性,welcome属性值为拼接字符串;第10~12行分别在HTML中绑定了name属性、welcome属性和say()函数。单击第12行定义的“登录”按钮时,say()函数将被调用,第11行插值语法中的welcome属性值将显示在页面上。
打开Chrome浏览器,访问demo,页面效果如图所示。
html页面效果
单击“登录”按钮将会调用作用域中定义的say()函数,页面效果如图所示。
单击“登录”按钮效果
在中可以看到,页面显示了“welcome:lucy!”,这说明作用域中定义的say()函数被调用了。