作用域是HTML(視圖)和JavaScript(控制器)之間的紐帶。
範圍是具有可用方法和屬性的對象。
範圍可以應用於視圖和控制器。
$rootScope
默認情況下,每個AngularJs應用程序都有壹個根作用域- $rootScope,它位於頂層,可以用作其他作用域的父作用域。
$範圍
作用域對應的是MVC模式的模型,是HTML(視圖)和JavaScript(控制器)的紐帶,視圖和控制器都可以應用。
作用域是表達式執行的上下文,作用域也是具有可用方法和屬性的對象。
首先,變量的值和賦值
& ltp ng-controller = " parent ctrl " & gt;
& ltspan & gt{ { number } } & lt/span>。
& ltp ng-controller="childCtrl " >
& ltspan & gt{ { number } } & lt/span>。
& ltbutton ng-click = " number = number+1 " & gt;增加
& lt/p & gt;
& lt/p & gt;
函數parentCtrl($scope){
$ scope . number = 1;
}
函數childCtrl($scope){
}效果:
界面上顯示了兩個1,但是當我們點擊按鈕時,childCtrl範圍內的數據發生了變化,而parentCtrl範圍內的數據沒有變化。
分析:
①childCtrl作用域繼承parentCtrl作用域(類似於JavaScript的原型鏈繼承),所以childCtrl作用域可以訪問parentCtrl的內容。
②點擊按鈕後,childCtrl的作用域會創建壹個number基本類型變量,當childCtrl有壹個基本類型變量時,不會訪問原型鏈。
求解:
①可以用$parent指定父作用域的變化。
& ltp ng-controller = " parent ctrl " & gt;
& ltspan & gt{ { number } } & lt/span>。
& ltp ng-controller="childCtrl " >
& ltspan & gt{ { number } } & lt/span>。
& ltbutton ng-click = " $ parent . number = number+1 " >增加
& lt/p & gt;
& lt/p & gt;(2)使用引用類型變量,內部和外部作用域都是對數據對象的引用,修改對象的屬性仍然引用同壹個變量。
& ltp ng-controller = " parent ctrl " & gt;
& ltspan & gt{ { data.number } } & lt/span>。
& ltp ng-controller="childCtrl " >
& ltspan & gt{ { data.number } } & lt/span>。
& ltbutton ng-click = " data . number = data . number+1 " >增加
& lt/p & gt;
& lt/p & gt;
函數parentCtrl($scope){
$ scope . data . number = 123 ';
}
函數childCtrl($scope){
} ng-if、ng-repeat、ng-switch、ng-include等指令也會生成新的作用域。
第二,指令中的範圍
。指令(" myDirective ",function () {
返回{
限制:“AE”,
範圍:{
姓名:“@我的姓名”,
年齡:' = ',
變化:' & amp'更改我的年齡'
},
替換:真,
模板:“& lt'我的指令' >+
“我的名字是:
“我的年齡是:
“在這裏修改名稱:
“& ltbutton ng-click = ' change age()' & gt;修改年齡
“& lt/p >;
}①範圍:假
當scope設置為false時,我們創建的指令和父作用域(實際上是同壹個作用域)* * *共享同壹個模型,所以如果我們修改了指令中的模型數據,就會反映到父作用域的模型中。
②範圍:真
當scope設置為true時,我們創建壹個新的作用域,但是這個作用域是繼承的父作用域;可以理解為我們新創建的作用域是壹個新的作用域,但是在初始化的時候,我們使用了父作用域的屬性和方法來填充我們的新作用域。它與父作用域不同。
③範圍:{}
@這是單個綁定的前綴標識符。
& ltp my-directive my-name = " { { name } } " & gt;& lt/p & gt;屬性的名字應該是-來連接兩個單詞,因為是數據的單個綁定,所以數據應該用{{}}來綁定。
=這是雙向數據綁定前綴標識符。
& ltp my-directive age="age " >& lt/p & gt;數據的雙向綁定要通過=前綴標識符來實現,所以不能使用{{}}。
& amp這是綁定函數方法的前綴標識符。
& ltp my-directive change-my-age = " change age()" & gt;& lt/p & gt;屬性的名稱應該是-以連接多個單詞。
以上是我為大家整理的,希望以後對大家有幫助。
相關文章:
如何用react實現菜單權限控制
詳細解釋props如何在vue.js中傳遞參數
如何實現輸入中的動態模糊查詢