Scope是AngularJS里的一个很重要的概念,简单的说它就是用来保存AngularJS Model们的对象,是Model们温暖的小家~ 那这个小家是什么时候造的呢? 1 html ng-app = mainApp 2 / html 我们知道, ng-app 是一个应用启动AngularJS的入口点,在这里也会创建一个r
Scope是AngularJS里的一个很重要的概念,简单的说它就是用来保存AngularJS Model们的对象,是Model们温暖的小家~
那这个小家是什么时候造的呢?
<span>1</span> <span>html</span> <span>ng-app</span>=<span>"mainApp"</span>> <span>2</span> <span><span>html</span>></span>
我们知道, ng-app
是一个应用启动AngularJS的入口点,在这里也会创建一个root
scope,在controller里可以通过 $rootScope
调到,每个应用只能有一个root
scope(当然了~root嘛~),但它会有多个child scope,那啥时候会创建child scope呢?
<span>1</span> <span>html</span> <span>ng-app</span>=<span>"mainApp"</span>> <span>2</span> <span>body</span> <span>ng-controller</span>=<span>"MainCtrl"</span>> <span>3</span> <span>div</span> <span>ng-controller</span>=<span>"SubCtrl"</span> <span>ng-include</span> <span>src</span>=<span>" 'template.html' "</span>> <span>4</span> <span><span>div</span>></span> <span>5</span> <span>ul</span>> <span>6</span> <span>li</span> <span>ng-repeat</span>=<span>"item in items"</span>>{{item.name}}<span><span>li</span>></span> <span>7</span> <span><span>ul</span>></span> <span>8</span> <span><span>body</span>></span> <span>9</span> <span><span>html</span>></span>
在上面的例子里, ng-controller
ng-include
ng-repeat
都创建了新的child
scope( ng-repeat
是对每一个重复的元素都创建了新的child
scope),他们之间的父子关系是这样的:
包含关系即是他们的父子关系,子scope是可以访问父scope上绑定的所有model和function的。
AngularJS会给scope对应的dom添加叫ng-scope的class,如果我们给自己的应用加这样一个css~
<span>1</span> <span><span>.ng-scope</span> </span><span>{<span><span><span>border</span></span></span><span>:<span><span> <span>2</span>px dotted red</span></span><span>;</span></span><span>}</span></span>
通过红色的虚线边框我们也可以看出来大概scope的范围,但注意,并不是所有的ng-scope都是新的scope,有些ng-scope类名对应的dom共享的是同一个scope。
细心的童鞋可能注意到, ng-controller="SubCtrl"
和 ng-include
放在同一个div上了,为啥 ng-controller="SubCtrl"
就是爸爸, ng-include
就是儿子呢?
这个没啥特别的原因, ng-controller
在AngularJS底层代码里实现的比较靠前而已,与在div上标明的顺序无关,但是这时会发生一个问题:
假如在 ng-include
对应的 template.html
里有这样的代码:
template.html
<span>1</span> <span><span></span><span><span><span>input</span> </span><span><span>type</span></span><span>=<span>"text"</span></span><span> <span>ng-model</span></span><span>=<span>"lastName"</span></span> <span>></span></span></span>
我们会发现,在 ng-controller="SubCtrl"
这个controller里是取不到lastName
的值的。
原因是这样的~
我们假设 ng-controller="SubCtrl"
对应的是 Scope
A , ng-include
对应的是 Scope
B ~
-
ng-include
创建的 Scope B 是ng-controller
创建的 Scope A 的子scope,所以在template.html
里可以访问 Scope A 的model和function。 - 在
template.html
里用ng-model
绑定的model,是存放在 Scope B 上的,Scope A 是拿不到的,即使model同名。
解决方案:
- 直接对 Scope A 的model绑定成员对象,如
ng-model="user.lastName"
- 或在
template.html
使用ng-model
绑定model时,加上$parent
(取父scope),如:ng-model="$parent.lastName"
,这样info就绑定在 Scope A上了
比较推荐第一种方式,因为第一种抽象出了对象,比起第二种所有的model都直接绑在$scope上来,封装的更好~
这里是官方Scope介绍~

小米15系列预计将于10月份正式发布,其全系列代号已在外媒MiCode代码库中曝光。其中,旗舰级小米15Ultra代号为"Xuanyuan"(意为"轩辕"),此名源自中国神话中的黄帝,象征着尊贵。小米15的代号为"Dada",而小米15Pro则以"Haotian"(意为"昊天")为名。小米15SPro内部代号为"dijun",暗指《山海经》创世神帝俊。小米15Ultra系列涵盖

自去年华为Mate60系列开售以来,我个人就一直将Mate60Pro作为主力机使用。在将近一年的时间里,华为Mate60Pro经过多次OTA升级,综合体验有了显著提升,给人一种常用常新的感觉。比如近期,华为Mate60系列就再度迎来了影像功能的重磅升级。首先是新增AI消除功能,可以智能消除路人、杂物并对空白部分进行自动补充;其次是主摄色准、长焦清晰度均有明显升级。考虑到现在是开学季,华为Mate60系列还推出了秋日礼遇活动:购机可享至高800元优惠,入手价低至4999元。常用常新的产品力加上超值

iPhone15与iPhone15Pro在今日正式发表,不过Pro系列作为高端机型,除了价格更高以外,也有许多专属功能,消费者在购买前得先认清差异,才不会在买了iPhone15后,才发现有些功能只有Pro系列才能用。显示器尽管搭载了相同的显示面板,但ProMotion自动适应更新频率技术与永远显示功能仍然是Pro系列专属。其余无论是在解析度、对比度、峰值亮度等层面,iPhone15与iPhone15Pro系列皆相同。动作按钮动作按钮目前是iPhone15Pro系列的专属设计,可以让使用者个人化自

Javascript 是一个非常有个性的语言. 无论是从代码的组织, 还是代码的编程范式, 还是面向对象理论都独具一格. 而很早就在争论的Javascript 是不是面向对象语言这个问题, 显然已有答案. 但是, 即使 Javascript 叱咤风云二十年, 如果想要看懂 jQuery, Angularjs, 甚至是 React 等流行框架, 观看《黑马云课堂JavaScript 高级框架设计视频教程》就对了。

在如今信息时代,网站已经成为人们获取信息和交流的重要工具。一个响应式的网站能够适应各种设备,为用户提供优质的体验,成为了现代网站开发的热点。本篇文章将介绍如何使用PHP和AngularJS搭建一个响应式网站,从而提供优质的用户体验。PHP介绍PHP是一种开源的服务器端编程语言,非常适用于Web开发。PHP具有很多优点,如易于学习、跨平台、丰富的工具库、开发效

随着互联网的不断发展,Web应用已成为企业信息化建设的重要组成部分,也是现代化工作的必要手段。为了使Web应用能够便于开发、维护和扩展,开发人员需要选择适合自己开发需求的技术框架和编程语言。PHP和AngularJS是两种非常流行的Web开发技术,它们分别是服务器端和客户端的解决方案,通过结合使用可以大大提高Web应用的开发效率和使用体验。PHP的优势PHP

很多想入手内存条的用户都想知道,影驰名人堂这个品牌的内存条,有哪几个系列,想要了解一下,其实这个品牌目前有三个系列,分别是HOFEXTREME限量版,HOFEXTREME,HOFPRORGB。名人堂内存有哪几个系列:答:HOFEXTREME限量版,HOFEXTREME,HOFPRORGB。这三款内存条都是性能比较好的,其中HOFEXTREME限量版是性能最好的,HOFPRORGB相对前面的两款,稍微弱一些但性能也很不错。名人堂内存拓展介绍:1、采用三星B-die颗粒,是内存颗粒中的王者,使用寿命

随着互联网的普及,越来越多的人在使用网络进行文件传输和共享。然而,由于各种原因,使用传统的FTP等方式进行文件管理无法满足现代用户的需求。因此,建立一个易用、高效、安全的在线文件管理平台已成为了一种趋势。本文介绍的在线文件管理平台,基于PHP和AngularJS,能够方便地进行文件上传、下载、编辑、删除等操作,并且提供了一系列强大的功能,例如文件共享、搜索、


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver Mac version
Visual web development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Atom editor mac version download
The most popular open source editor

SublimeText3 Linux new version
SublimeText3 Linux latest version
