AngularJS的範圍Scope

來源:互聯網
上載者:User

標籤:表達   height   並且   簡介   指定   watch   rip   檢測   size   

 

1.簡介

       angularjs啟動並產生視圖時,會根據ng-app元素和$RootScope進行綁定。$RootScope是所有$scope對象的最上層,是angularjs中最接近於全域範圍的對象。

       $scope對象就是一個普通的javascript對象,在angularjs中充當資料模型,但與傳統的資料模型又不一樣,$scope並不負責處理和資料操作,它只是視圖和HTML之間的橋樑。

       $scope的所有屬性都可以自動被視圖訪問到。

       範圍是構成AngularJS應用的核心,它與應用的資料模型相關聯,同時也是運算式執行的上下文。範圍包含了渲染視圖所需的功能和資料,它是所有視圖的唯一源頭,可以將範圍理解成視圖模型。 

  $scope對象是定義應用商務邏輯、控制器方法和視圖屬性的地方。angularjs將$scope設計成和DOM類似的結構,因此$scope可以進行嵌套,也就是說我們可以引用父級$scope中引用父級$scope中的屬性和方法。

 

2.範圍功能
  • 提供觀察者以監視資料模型的變化。
  • 可以將資料模型的變化通知給整個應用,設定是系統外的組件。
  • 可以進行嵌套,隔離業務功能和資料。
  • 給運算式提供運算時所需的執行環境。
3.會建立子範圍的指令

  AngularJS中大部分指令不會建立子範圍,但是以下指令例外,開發時必須注意範圍嵌套的相關問題,否則很容易出錯。

  • ng-include 
    建立一個新的子範圍,並且會繼承父範圍。
  • ng-switch 
    建立一個新的子範圍,並且會繼承父範圍。
  • ng-repeat 
    為每一個item都建立一個子範圍,全部都會繼承父範圍。
  • ng-controller 
    建立一個新的範圍,並且會繼承父範圍
4.$scope生命週期

  $scope對象的生命週期處理有四個不同階段,分別是建立,連結,更新和銷毀。  

      建立

  在建立控制器或指令時,AngularJS會用$injector建立一個新的範圍,並在這個建立的控制器或指令運行時將範圍傳遞進去。

      連結

  當Angular開始運行時,所有的$scope對象都會附加或者連結到視圖中。所有建立$scope對象的函數也會將自身附加到視圖中。這些範圍將會註冊當Angular應用上下文中發生變化時所需要啟動並執行函數。這些函數被稱為$watch函數,Angular通過這些函數獲知何時啟動時間迴圈。

       更新

  當事件迴圈運行時,它通常執行在$rootScope上。每個子範圍都執行自己的髒值檢測,每個監控函數都會檢查變化。如果檢測到任意變化,$scope對象就會觸發指定的回呼函數。

     銷毀

  當一個$scope在視圖中不再需要時,這個範圍將會清理和銷毀自己。(基本上不會需要你來清理範圍,但是你還是可以使用$scope上的$destroy()方法來清理範圍)。

AngularJS的範圍Scope

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.