本篇主要介紹控制器:
控制器在前面的例子中已經大量的用到,它的作用主要是:
控制某塊檢視,通過$scope向這塊檢視提供資料,函式,並且監視需要被檢測的部分,當發生變化時,做出相應的動作,從而起到控制該部分檢視的作用
為了保持控制器的最小化和可管理,應該為檢視中的每個功能都建立一個控制器,比如,有一個選單,就建立一個menuController,有一個導航,就建立一個NavController...
控制器可以內嵌,比如:
<div ng-controller = "ParentController"> <h3>{{title}}</h3> <div ng-controller = SonController> <h5>{{title}}</h5> <div> </div>
function ParentController ($scope){ $scope.title = 'I am ParentController'; } function SonController ($scope){ $scope.title = 'I am SonController'; }
可以得到正確的檢視:
如果我們把這句話註釋掉:
//$scope.title = 'I am SonController';
會得到這樣的檢視:
實際上,控制器的巢狀,就是作用域的巢狀,傳遞給內嵌控制器呃$scope繼承了它父控制器的$scope.
所以SonController的$scope可以訪問ParentController的$scope的所有屬性和方法
------------------------------------------------------------------------------------------------------------------------------------------------------------
遺留問題:
當一個檢視有多個功能的時候,沒有辦法為一個div新增兩個控制器,雖然控制器可以巢狀,但不能錯位巢狀,比如:
<div ng-controller="controllerOne">
<div ng-controller="controllerTwo">
</div>
</div>
另外,還有一個"檢視+路由"的方法,將在後面介紹.不知道是否能夠解決這些問題.