首頁 資料庫 mysql教程 【AngularJS系列2】scope

【AngularJS系列2】scope

Jun 07, 2016 pm 03:48 PM
angularjs 系列

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),他们之间的父子关系是这样的:

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

  1. ng-include 创建的 Scope B 是 ng-controller 创建的 Scope A 的子scope,所以在 template.html 里可以访问 Scope A 的model和function。
  2. 在 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介绍~

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1653
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1251
29
C# 教程
1224
24
小米 15 系列全代號曝光:Dada、Haotian、Xuanyuan 小米 15 系列全代號曝光:Dada、Haotian、Xuanyuan Aug 22, 2024 pm 06:47 PM

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

華為 Mate 60 系列最佳入手時機,新增 AI 消除 + 影像升級,更可享秋日禮遇活動 華為 Mate 60 系列最佳入手時機,新增 AI 消除 + 影像升級,更可享秋日禮遇活動 Aug 29, 2024 pm 03:33 PM

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

2022年最新5款的angularjs教學從入門到精通 2022年最新5款的angularjs教學從入門到精通 Jun 15, 2017 pm 05:50 PM

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

使用PHP和AngularJS建立響應式網站,提供優質的使用者體驗 使用PHP和AngularJS建立響應式網站,提供優質的使用者體驗 Jun 27, 2023 pm 07:37 PM

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

iPhone 15 和iPhone 15 Pro 怎麼挑?九大差異一次過目 iPhone 15 和iPhone 15 Pro 怎麼挑?九大差異一次過目 Sep 14, 2023 am 08:01 AM

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

使用PHP和AngularJS建立Web應用 使用PHP和AngularJS建立Web應用 May 27, 2023 pm 08:10 PM

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

iPhone 15 Pro及15 Pro Max新改進預覽 iPhone 15 Pro及15 Pro Max新改進預覽 Sep 12, 2023 pm 10:45 PM

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

名人堂內存有哪幾個系列 名人堂內存有哪幾個系列 Feb 04, 2024 am 09:18 AM

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

See all articles