angular中的作用域及继承
在一些使用angular框架的大型项目中,似乎有很多个controller,而每个controller都有自己的$scope.
<!DOCTYPE html> <html> <head> <title></title> </head> <body ng-app="myApp"> <div ng-controller="parentController"> {{name}} <div ng-controller="sonController"> {{name}} </div> </body> <script type="text/javascript" src="./angular.min.js"></script> <script> var parentController=function($scope){ $scope.name="parent"; } var sonController=function($scope){ console.log($scope.name);//parent } parentController.$injector=["$scope"]; sonController.$injector=["$scope"]; angular.module("myApp",[]) .controller("parentController",parentController) .controller("sonController",sonController) </script> </html> 首先子控制器在自己的作用域内查找name属性,没找到,向父控制器找。 补充一点,如何在子控制器中修改父控制器中$scope的值,可见如下: $scope.$parent.name="son";在子控制器中$scope.$parent就表示父控制器中的$scope,然后修改其值即可。 parent 用于指定创建的子scope的父scope,如果没有此参数,则父scope为调用当前$new方法的$scope var myController=function($scope){ $scope.data="hello!" var scope1=$scope.$new(false,$scope); console.log(scope1.data); //hello! scope1继承了$scope,所以可以访问到data var scope2=$scope.$new(true,$scope); console.log(scope2.data);// undefined 第一个参数为true,表示是隔离的,无法继承,自己又没有,故为undefined } myController.$injector=["$scope"]; angular.module("myApp",[]) .controller("myController",myController) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |