作用域的原型繼承是非常簡單普遍的,甚至你不必關心它的運作。直到你在子作用域中向父作用域的原始類型屬性使用雙向數據綁定2-way data binding,比如Form表單的ng-model為父作用域中的屬性,且為原始類型,輸入數據后,它不會如你期望的那樣運行——AngularJS不會把輸入數據寫到你期望的父作用域屬性中去,而是直接在子作用域創建同名屬性并寫入數據。這個行為符合JavaScript原型繼承機制的行為。AngularJS新手通常沒有認識到ng-repeat、?ng-switch、ng-view和ng-include?都會創建子作用域, 所以經常出問題。
2017-05-15
AngularJS中,子作用域一般都會通過JavaScript原型繼承機制繼承其父作用域的屬性和方法。但有一個例外:在directive中使用scope: { ... },這種方式創建的作用域是一個獨立的"Isolate"作用域,它也有父作用域,但父作用域不在其原型鏈上,不會對父作用域進行原型繼承。這種方式定義作用域通常用于構造可復用的directive組件。
作用域的原型繼承是非常簡單普遍的,甚至你不必關心它的運作。直到你在子作用域中向父作用域的原始類型屬性使用雙向數據綁定2-way data binding,比如Form表單的ng-model為父作用域中的屬性,且為原始類型,輸入數據后,它不會如你期望的那樣運行——AngularJS不會把輸入數據寫到你期望的父作用域屬性中去,而是直接在子作用域創建同名屬性并寫入數據。這個行為符合JavaScript原型繼承機制的行為。AngularJS新手通常沒有認識到ng-repeat、?ng-switch、ng-view和ng-include?都會創建子作用域, 所以經常出問題。