Scope(作用域) 是應用在 HTML (視圖) 和 JavaScript (控制器)之間的紐帶。Scope 是一個對象,有可用的方法和屬性。Scope 可應用在視圖和控制器上。
那么,如何使用Scope呢?
????????在 AngularJS 創建控制器時,你可以將 $scope 對象當作一個參數傳遞:例子如下:
????????Scope(作用域)是angular應用程序中視圖(HTML)和控制器(JavaScript)之間的紐帶。也就是說HTML和JavaScript可以通過它來傳輸、共享數據。Scope是一個對象,有自己的很多的方法和屬性,$scope正是創建控制器時傳遞的Scope對象的一個實例。
????????創建控制器時傳遞了Scope對象($scope)的一個實例,所以一個控制器對應一個Scope對象,在多個控制器之間共享數據怎么辦?多個控制器若屬于同一個APP,我們可以用$rootScope來實現控制器間的數據共享.
? ??? ??對于$scope這個對象,比較精辟的理解是:
? ??????首先,$scope本身是一個普通的JavaScript對象;其次,$scope是一個表達式的執行環境,我的理解是這個環境是一個“域”;
? ??????我們該如何理解執行環境呢?在JavaScript中,執行環境定義了變量或函數有權訪問的其他數據,也就決定了它們可以對哪些變量或者函數進行操作。每個執行環境都有一個與之關聯的變量對象,這個對象中保存了所有對應的當前環境的所有變量和函數的定義。當然,我們編寫的代碼是無法訪問這個對象的,但解析器在處理數據時會在后臺使用它。
是不是感覺與$scope很巧合,$scope同樣是一個普通JavaScript對象,也是一個表達式的執行環境,并綁定了當前表達式的變量或者函數。很顯然,AngularJS運用$scope幫助我們更好的去規范了不同執行環境中的變量與函數。
那么這里我們再來思考另一個$scope的特性,$scope是一個樹形結構,與DOM標簽平行,子$scope對象可以對父$scope對象的變量、函數等進行操作。
????????子$scope對象可以對父$scope對象的屬性和方法進行訪問,$scope對象是樹形結構 。JS中一般認為window對象是JS的全局執行環境,那么$scope中的全局執行環境是什么?根$scope一般被認為位于ng-app上。
Scope 概述(來自菜鳥教程)
AngularJS 應用組成如下:
????????View(視圖), 即 HTML。
????????Model(模型), 當前視圖中可用的數據。
????????Controller(控制器), 即 JavaScript 函數,可以添加或修改屬性。
scope 是模型。scope 是一個 JavaScript 對象,帶有屬性和方法,這些屬性和方法可以在視圖和控制器中使用。
Scope 作用范圍
????????了解你當前使用的 scope 是非常重要的。在以上兩個實例中,只有一個作用域 scope,所以處理起來比較簡單,但在大型項目中, HTML DOM 中有多個作用域,這時你就需要知道你使用的 scope 對應的作用域是哪一個。
? ?????當我們使用 ng-repeat 指令時,每個重復項都訪問了當前的重復對象:
根作用域
所有的應用都有一個$rootScope,它可以作用在ng-app指令包含的所有 HTML 元素中。
$rootScope可作用于整個應用中。是各個 controller 中 scope 的橋梁。用 rootscope 定義的值,可以在各個 controller 中使用。可以理解是Java中的Object,所有的父類。
例子: