Angular JS學習筆記(控制器、作用域)

Angular JS 控制器

在Angular中,如果在DOM中使用ng-controller指令添加了控制器,ng會調用該控制器構造函數生成一個控制器對象,創建了一個作用域($scope)

控制器有兩個作用:

  • 初始化$scope對象
  • 爲$scope對象添加行爲/方法、

初始化$scope對象

    var myApp = angular.module('myApp',[]);
 
    myApp.controller('GreetingCtrl', ['$scope', function($scope) {
        $scope.greeting = 'Hello!';
    }]);

我們推薦先聲明模塊,在模塊下定義controller,用內聯注入的方式注入scope依賴。

ng-controller指令會創建一個新的$scope作用域,所以我們在顯示彈窗的情景下,若有多個父頁面使用同一個彈窗頁面代碼,需要考慮controller,作用域的問題,作用域不同,即使是同名變量,在某一作用域所做的修改不會影響它在其他地方的值。

$Scope作用域

在Angular JS中,子作用域通常在原型上從其父作用域繼承而來。
而在定義可重用組件時,我們會聲明scope爲{…},這樣我們會創建一個典型的非繼承作用域。

這和java的繼承很相似,如果set該作用域的屬性,就會重寫,否則就會直接繼承父作用域的屬性,當然我們也可以使用$parent來獲取父作用域的屬性。

值得注意的一點,我們應該習慣使用對象。
比如我們想使用一個屬性,我們先聲明一個對象,將該屬性聲明爲該對象的屬性。
我們在子作用域修改父作用域的變量時,會自動生成一個作用範圍,而在修改對象的屬性時,ng-model在尋找對象時,原型繼承就會起作用了,會找到父作用域中的對象以及屬性

總的來說,綁定對象中的屬性,就會避免子作用域覆蓋父作用域的問題了。

這篇寫的超好,大家看一下
@@@@@ 作用域詳解@@@

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章