AngulaJS之作用域

作用域($scope)

实质上是一个作用哉对象,作用:存储数据模型、为表达式提供上下文环境、监听表达式变化并传播事件,是view与controller之间的重要桥梁。

1.特点

提供了一个$watch方法来监听数据模型的变化,ng-model实现的双向数据绑定就是通过调用访方法进行数据模型监听;

  $watch方法监控模型数据的变化,主要是因为在Angula内部,当对绑定ng-model指定的属性进行修改时,其内部的$digest方法就会自动执行一次,检测ng-mode所绑定的属性值与上次$digest方法执行时获取的内容是否一致,如果不一致,则执行$watch方法绑定的处理函数。

提供另一个$apply方法,为各种类型的数据模型改变提供支撑,例如通过view中ng-click指定,执行controller中的代码;

为表达式提供执行的环境,作用域通过提供$scope对象,使所有的表达式都拥有对应的执行环境,也就是执行的上下文对象。

2.作用数据模型的作用域

作用域不仅是controller与view的桥梁,也是view与指定的桥梁,因为在自定定指令时,会调用$watch方法监听各个表达式的变化,一旦作用域中的表达式发生了变化,$wathc方法将通知指令,而指令将根据这个变化重新渲染DOM页面,即更新作用域中的属性值内容。

无论是指定,还是controller,它们都可以通过作用域与视图中的DOM绑定。由此,诞生2个数据关系链接,一条是:指定—>作用域—>view,另一条是:controller—>$scope—>view,这2条关系链之间还是相互独立的。

3.作用域的层级和事件

作用域在绑定了页面元素后,便依据元素的层次关系形成了自身的层级关系,而这这些层级关系中,它们可以通过事件的传播进行数据的通信,只是这种通过事件的数据通信的应用场景非常有限,仅限于父和子级之间的作用域。

时间: 2024-11-26 00:40:11

AngulaJS之作用域的相关文章

angularJS(4)

angularJS(4) 一:angulaJs的作用域scope Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带.scope 是一个 JavaScript 对象,带有属性和方法,这些属性和方法可以在视图和控制器中使用. Scope 可应用在视图和控制器上.AngularJS 应用组成如下 :$scope是一个模型View(视图), 即 HTML.Model(模型), 当前视图中可用的数据.Controller(控制器), 即 JavaScrip

AngulaJS实战总结, 带你进入AngularJS世界(待续)

AngulaJS实战总结, 带你进入AngularJS世界(待续) 使用AngularJS  进行Hybrid App 开发已经有一年多时间了,这里做一个总结. 一.AngularJS 初始化加载流程 1.浏览器载入HTML,然后把它解析成DOM.2.浏览器载入angular.js脚本.3.AngularJS等到DOMContentLoaded事件触发.4.AngularJS寻找ng-app指令,这个指令指示了应用的边界.5.使用ng-app中指定的模块来配置注入器($injector).6.注

一招制敌 - 玩转 AngularJS 指令的 Scope (作用域),讲得特别好

学习了AngularJS挺长时间,最近再次回首看看指令这部分的时候,觉得比自己刚开始学习的时候理解的更加深入了,尤其是指令的作用域这部分. 步入正题: 每当一个指令被创建的时候,都会有这样一个选择,是继承自己的父作用域(一般是外部的Controller提供的作用域或者根作用域($rootScope)),还是创建一个新的自己的作用域,当然AngularJS为我们指令的scope参数提供了三种选择,分别是:false,true,{}:默认情况下是false. scope = false 首先我们来看

CSS作用域问题

今天去长虹面试,面试官问了一个问题,就是给一个div在三个地方设置不同的background,最后div显示的颜色是哪一个?当时我第一次回答的是最后一个,但是后来又改口说是第一个,回来一验证,证明自己错了,今天就总结一下CSS样式的作用域问题吧. 首先对HTML引入样式的优先级排序,数字越大优先级越高#### 样式优先级1. 浏览器缺省设置2. 外部样式表3. 内部样式表(位于 <head> 标签内部)4. 内联样式(在 HTML 元素内部) ---#### 外部样式表>浏览器缺省设置H

JavaScript的进阶之路(二)函数简介,变量、作用域和内存问题

<h3>ECMAScript中函数不存在函数签名的概念,没有重载</h3><h3>无需指定返回值,可以在任何时候返回任何值.未指定返回值的函数,返回的是一个特殊的undefined值</h3> <script type="text/javascript"> function sayHi(){ console.log("Hi"); }; sayHi(); function sayName(name,age){

JavaScript栈和堆内存,作用域

1.栈 stack"和"堆 heap": 简单的来讲,stack上分配的内存系统自动释放,heap上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里.stack一般是静态分配内存,heap上一般是动态分配内存. 2.基本类型和引用类型: 基本类型:存放在栈内存中的简单数据段.数据大小确定,内存空间大小可以分配. 引用类型:存放在堆内存中的对象,变量中实际保存的是一个指针,这个指针指向另一个位置.每个空间大小不一样,要根据情况开进行特定的分配. 详见<Javas

深入理解javascript的作用域--函数声明为什么会前置

标签: javascript函数对象 这篇博文解决了以下迷惑 函数声明为什么前置 函数声明前置和变量前置优先级问题 为什么js文件开头就可以使用Math,String等库,而不需要导入头文件 1.变量对象VO 变量对象(Variable Object, 缩写为VO)是一个抽象 概念中的"对象",它用于存储执行上下文中的: 1. 变量 2. 函数声明 3. 函数参数 js解释器就是通过变量对象(VO)来找到我们定义的变量和函数的. 举个例子: var a = 10; function t

【JS】JavaScript中的执行环境与作用域

JavaScript中的执行环境定义了变量或函数有权访问的数据(每个函数都有自己的执行环境),全局执行环境是最外围的执行环境,在浏览器中,全局执行环境就是window对象,所以所有的全局变量和函数都是作为window对象的属性和方法创建的.当某一个执行环境中所有代码执行完成后,该环境就被销毁,保存在其中的变量和函数也将被销毁,全局执行环境在关闭网页或浏览器时才被销毁. 当代码在一个环境中执行时,会创建变量对象的一个作用域链(保证对执行环境有权访问的变量和函数的有序访问),如果环境是函数,将其活动

Python之路18-函数作用域、全局变量、局部变量

#全局变量 school = 'lianhedaxue' def test(name):     #强制修改全局变量     global school     school = 'haha'     print ('before change',name,school)     name = 'Jack'   #这个函数就是这个变量的作用域     print ('after change',name) name = 'Tom' test(name) print (name) print (s