angular中ng-controller父子級
阿新 • • 發佈:2018-11-29
ng-controller 指令用於為你的應用新增控制器。
在控制器中,你可以編寫程式碼,製作函式和變數,並使用 scope 物件來訪問。
當有兩個控制器father、child且child 在 father內,那child 可以稱為子控制器,它將繼承父控制器father的scope。child就可以訪問到father的scope中的所有函式和變數。
<div ng-controller="father">
<div >name1:{{ name1 }}</div>
<div ng-controller="child" >name2:{{ name2 }}</div>
</div>
情況1:
app.controller("father",function ($scope) {
$scope.name1 = "x";
$scope.name2 = "y";
});
頁面顯示結果:
name1:x
name2:y
情況2:
app.controller("child",function ($scope) {
$scope.name1 = "a";
$scope.name2 = "b";
});
頁面顯示結果:
name1:
name2:b:
情況3:
app.controller("father",function ($scope) {
if($scope.name1){
$scope.name1 += "!";
console.log($scope.name1);
} else {
$scope.name1 = "@";
console.log($scope.name1);
}
if($scope.name2){
$scope.name2 += "#";
console.log($scope.name2);
} else {
$scope.name2 = "$";
console.log($scope.name2);
}
console.log("father");
});
app.controller("child",function ($scope) {
if($scope.name1){
$scope.name1 += "%";
console.log($scope.name1);
} else {
$scope.name1 = "^";
console.log($scope.name1);
}
if($scope.name2){
$scope.name2 += "&";
console.log($scope.name2);
} else {
$scope.name2 = "*";
console.log($scope.name2);
}
console.log("child");
});
控制檯列印結果:
@
$
father
@%
$&
child
頁面顯示結果:
name1:@
name2:$&
可以看出name1的頁面顯示結果與控制檯列印結果不一致
結論:
父級控制器先執行而子級控制器後執行。父級和子級控制器都可對父級下scope作用域進行訪問操作,但當子級控制器嘗試處理父級作用域內、子級作用域外的資料則可能會導致父級中的資料變髒。