angular中ng-controller父子级

版权声明:本文为博主学习记录的文章,欢迎讨论! https://blog.csdn.net/u012426959/article/details/80772489

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作用域进行访问操作,但当子级控制器尝试处理父级作用域内、子级作用域外的数据则可能会导致父级中的数据变脏。

猜你喜欢

转载自blog.csdn.net/u012426959/article/details/80772489