作用域(scope)①是構成AngularJS應用的核心基礎,在整個框架中都被廣泛使用,因此瞭解它如何工作是非常重要的。應用的作用域是和應用的數據模型相關聯的,同時作用域也是表達式執行的上下文。$scope對象是定義應用業務邏輯、控制器方法和視圖屬性的地方。作用域是視圖和控制器之間的膠水。在應用將視
作用域(scope)①是構成AngularJS應用的核心基礎,在整個框架中都被廣泛使用,因此瞭解
它如何工作是非常重要的。
應用的作用域是和應用的數據模型相關聯的,同時作用域也是表達式執行的上下文。$scope
對象是定義應用業務邏輯、控制器方法和視圖屬性的地方。
作用域是視圖和控制器之間的膠水。在應用將視圖渲染並呈獻給用戶之前,視圖中的模板會
和作用域進行連接,然後應用會對DOM進行設置以便將屬性變化通知給AngularJS。這個功能讓
XHR請求等promise對象的實現變得非常容易。查看第17章獲取更多關於promise對象的內容。
作用域是應用狀態的基礎。基於動態綁定,我們可以依賴視圖在修改數據時立刻更新$scope,
也可以依賴$scope在其發生變化時立刻重新渲染視圖。
AngularJS將$scope設計成和DOM類似的結構,因此$scope可以進行嵌套,也就是說我們可
以引用父級$scope中的屬性。
如果你瞭解JavaScript,對這個分層的概念應該並不陌生。在JavaScript中,當創建
一個新的執行上下文時,實際上是用函數創建了一個新的本地上下文。AngularJS中
$scope的概念與其類似,當為子DOM元素創建新的作用域時,實際上是為子DOM元素
創建了一個新的執行上下文。
作用域提供了監視數據模型變化的能力。它允許開發者使用其中的apply機制,將數據模型
的變化在整個應用範圍內進行通知。我們在作用域的上下文中定義和執行表達式,同時它也是將
事件通知給另一個控制器和應用其他部分的中介。
將應用的業務邏輯都放在控制器中,而將相關的數據都放在控制器的作用域中,這是非常完
美的架構。