【AngularJS系列2】scope
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介绍~

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

小米15系列預計10月正式發布,其全系列代號已在外媒MiCode程式碼庫曝光。其中,旗艦級小米15Ultra代號為"Xuanyuan"(意為"軒轅"),此名源自中國神話中的黃帝,象徵尊貴。小米15的代號為"Dada",而小米15Pro則以"Haotian"(意為"昊天")為名。小米15SPro內部代號為"dijun",暗指《山海經》創世神帝俊。小米15Ultra系列涵蓋

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

Javascript 是一個非常有個性的語言. 無論是從程式碼的組織, 還是程式碼的程式設計範式, 或物件導向理論都獨具一格. 而很早就在爭論的Javascript 是不是物件導向語言這個問題, 顯然已有答案. 但是, 即使Javascript 叱吒風雲二十年, 如果想要看懂jQuery, Angularjs, 甚至是React 等流行框架, 觀看《黑馬雲課堂JavaScript 高級框架設計視頻教程》就對了。

在現今資訊時代,網站已成為人們獲取資訊和交流的重要工具。一個響應式的網站能夠適應各種設備,為使用者提供優質的體驗,成為了現代網站開發的熱點。本篇文章將介紹如何使用PHP和AngularJS建立響應式網站,進而提供優質的使用者體驗。 PHP介紹PHP是一種開源的伺服器端程式語言,非常適合Web開發。 PHP具有許多優點,如易於學習、跨平台、豐富的工具庫、開發效

iPhone15與iPhone15Pro在今日正式發表,不過Pro系列作為高階機型,除了價格更高以外,也有許多專屬功能,消費者在購買前得先認清差異,才不會在買了iPhone15後,才發現有些功能只有Pro系列才能用。顯示器儘管搭載了相同的顯示面板,但ProMotion自動適應更新頻率技術與永遠顯示功能仍然是Pro系列專屬。其餘無論在解析度、對比、峰值亮度等層面,iPhone15與iPhone15Pro系列皆相同。動作按鈕動作按鈕目前是iPhone15Pro系列的專屬設計,可以讓使用者個人化自

隨著網路的不斷發展,Web應用已成為企業資訊化建設的重要組成部分,也是現代化工作的必要手段。為了讓Web應用能夠方便開發、維護和擴展,開發人員需要選擇適合自己開發需求的技術框架和程式語言。 PHP和AngularJS是兩種非常流行的Web開發技術,它們分別是伺服器端和客戶端的解決方案,透過結合使用可以大大提高Web應用的開發效率和使用體驗。 PHP的優勢PHP

Apple於9月13日凌晨1時發表會將會有4款新iPhone登場,分別為iPhone15、15Plus、15Pro及15ProMax。高階的iPhone15Pro和ProMax將使用全新設計,側邊材質從不鏽鋼變更為鈦金屬。 Pro系列的顏色有灰、黑、深藍、白等選項。 iPhone15Pro和ProMax的螢幕今年會比去年的14Pro及14ProMax稍微大一些。這項變更是由於蘋果採用了名為LIPO(低注射壓力包覆成型)的新製程技術,使得螢幕邊框厚度減少了約三分之一。高階型號將換用具有磨砂質感的鈦金屬

許多想入手記憶體的使用者都想知道,影馳名人堂這個品牌的記憶體條,有哪幾個系列,想了解一下,其實這個品牌目前有三個系列,分別是HOFEXTREME限量版,HOFEXTREME,HOFPRORGB。名人堂記憶體有哪幾個系列:答案:HOFEXTREME限量版,HOFEXTREME,HOFPRORGB。這三款記憶體都是性能比較好的,其中HOFEXTREME限量版是性能最好的,HOFPRORGB相對前面的兩款,稍微弱一些但性能也很不錯。名人堂內存拓展介紹:1、採用三星B-die顆粒,是內存顆粒中的王者,使用壽命
