AngularJs 作用域

$rootScope

每個AngularJs應(yīng)用默認(rèn)有一個根作用域--$rootScope, 根作用域位于最頂層世曾,作為其他作用域的父作用域轮听,可作用于整個應(yīng)用中。

$scope

  • scope(作用域)對應(yīng)MVC模式的Model血巍,是應(yīng)用在HTML(視圖)JavaScript(控制器)之間的紐帶述寡,可應(yīng)用在視圖和控制器上。

  • scope是表達(dá)式執(zhí)行的上下文禀崖,同時作用域也是一個對象螟炫,有可用的方法和屬性。

一掸屡、變量的取值和賦值
<div ng-controller="parentCtrl">
    <span>{{number}}</span>
    <div ng-controller="childCtrl">
        <span>{{number}}</span>
        <button ng-click="number = number +1">增加</button>
    </div>
</div>

function parentCtrl($scope){
    $scope.number = 1;
}
function childCtrl($scope){
    
}
效果:
  • 界面上顯示了兩個1仅财,但當(dāng)我們點擊按鈕之后满着,childCtrl作用域內(nèi)的數(shù)據(jù)改變了,parentCtrl作用域內(nèi)的數(shù)據(jù)沒有改變
分析:
  • childCtrl作用域繼承了parentCtrl作用域(類似于JavaScript的原型鏈繼承),所以childCtrl作用域可以訪問到parentCtrl的內(nèi)容缕探。
  • ②點擊按鈕后childCtrl作用域就會創(chuàng)建一個number基礎(chǔ)類型變量还蹲,當(dāng)childCtrl已有某個基礎(chǔ)類型變量就不會訪問原型鏈。
解決:
  • ①可以使用$parent來指定上級作用域改變

      <div ng-controller="parentCtrl">
          <span>{{number}}</span>
          <div ng-controller="childCtrl">
              <span>{{number}}</span>
              <button ng-click="$parent.number = number +1">增加</button>
          </div>
      </div>
    
  • ②使用引用類型變量潭兽,內(nèi)外層作用域均是data對象的引用山卦,修改對象的屬性诵次,引用的還是同一個變量枚碗。

      <div ng-controller="parentCtrl">
          <span>{{data.number}}</span>
          <div ng-controller="childCtrl">
              <span>{{data.number}}</span>
              <button ng-click="data.number = data.number +1">增加</button>
          </div>
      </div>
      
      function parentCtrl($scope){
          $scope.data.number = 123';
      }
      function childCtrl($scope){
          
      }
    

ng-if肮雨、ng-repeat箱玷、ng-switchng-include等指令也會產(chǎn)生新作用域

二波丰、Directive中的作用域
.directive("myDirective", function () {
return {
    restrict: "AE",
    scope: {
        name: '@myName',
        age: '=',
        changeAge: '&changeMyAge'
    },
    replace: true,
    template: "<div class='my-directive'>" +
        "我的名字是:<span ng-bind='name'></span><br/>" +
        "我的年齡是:<span ng-bind='age'></span><br/>" +
        "在這里修改名字:<input type='text' ng-model='name'><br/>" +
        "<button ng-click='changeAge()'>修改年齡</button>" +
        " </div>"
}
scope:false

當(dāng)scope設(shè)置為false的時候,我們創(chuàng)建的指令和父作用域(其實是同一個作用域)共享同一個model模型呀舔,所以在指令中修改模型數(shù)據(jù)扩灯,它會反映到父作用域的模型中。

scope:true

當(dāng)scope設(shè)置為true的時候惧磺,我們就新創(chuàng)建了一個作用域磨隘,只不過這個作用域是繼承的父作用域顾患;可以這樣理解,我們新創(chuàng)建的作用域是一個新的作用域设预,只不過在初始化的時候鳖枕,用了父作用域的屬性和方法去填充我們這個新的作用域桨螺。它和父作用域不是同一個作用域。

scope:{}
@ 這是一個單項綁定的前綴標(biāo)識符

<div my-directive my-name="{{name}}"></div>

<font color=red>屬性的名字要用-將兩個單詞連接魏烫,因為是數(shù)據(jù)的單項綁定所以要通過使用{{}}來綁定數(shù)據(jù)则奥。</font>

= 這是一個雙向數(shù)據(jù)綁定前綴標(biāo)識符

<div my-directive age="age"></div>

<font color=red>數(shù)據(jù)的雙向綁定要通過=前綴標(biāo)識符實現(xiàn)读处,所以不可以使用{{}}。</font>

& 這是一個綁定函數(shù)方法的前綴標(biāo)識符

<div my-directive change-my-age="changeAge()"></div>

<font color=red>屬性的名字要用-將多個個單詞連接井辜。</font>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粥脚,一起剝皮案震驚了整個濱河市包个,隨后出現(xiàn)的幾起案子碧囊,更是在濱河造成了極大的恐慌,老刑警劉巖糯而,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熄驼,死亡現(xiàn)場離奇詭異,居然都是意外死亡瓜贾,警方通過查閱死者的電腦和手機(jī)诺祸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祭芦,“玉大人序臂,你說我怎么就攤上這事∈凳” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵逊彭,是天一觀的道長咸灿。 經(jīng)常有香客問我,道長侮叮,這世上最難降的妖魔是什么避矢? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上审胸,老公的妹妹穿的比我還像新娘亥宿。我一直安慰自己,他們只是感情好映企,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布苹享。 她就那樣靜靜地躺著得问,像睡著了一般抚岗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上胚委,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天硼身,我揣著相機(jī)與錄音营袜,去河邊找鬼荚板。 笑死拧抖,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的袱吆。 我是一名探鬼主播榕暇,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼壁晒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起携取,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晤斩,沒想到半個月后旷偿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幢妄,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡忍法,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年原探,在試婚紗的時候發(fā)現(xiàn)自己被綠了徒蟆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡嫂用,死狀恐怖甘畅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情函似,我是刑警寧澤撇寞,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏侵贵。R本人自食惡果不足惜蔫骂,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一补胚、第九天 我趴在偏房一處隱蔽的房頂上張望敦间。 院中可真熱鬧,春花似錦、人聲如沸靶病。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至浮声,卻和暖如春屉符,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工软啼, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留贿条,地道東北人胧辽。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • scope揭秘 你已經(jīng)從書中開始的部分看到了關(guān)于scope作用域的內(nèi)容。現(xiàn)在我們要去揭秘AngularJS作用域。...
    MakingChoice閱讀 474評論 0 0
  • 翻譯自:Understanding Scopes 摘要 在AngularJS中闷沥,子作用域通常會原型繼承于其父作用域...
    paradisefj閱讀 1,013評論 0 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • 非常詳細(xì)?? :AngularJS實例教程(二)——作用域與事件 Scope 概述, AngularJS 應(yīng)用組成如...
    darr250閱讀 219評論 0 0
  • AngularJS是什么?AngularJs(后面就簡稱ng了)是一個用于設(shè)計動態(tài)web應(yīng)用的結(jié)構(gòu)框架。首先,它是...
    200813閱讀 1,607評論 0 3