这是我的代码:
function ParentCtrl($scope) {
$scope.people = ["Tom", "Dick", "Harry"];
$scope.count = $scope.people.length;
}
function ChildCtrl($scope) {
$scope.parentpeople = ParentCtrl.people //this is what I would like to do ideally
}
Run Code Online (Sandbox Code Playgroud)
我controller
在另一个内嵌一个角.我想将controller
第一个变量传递给第二个变量.有谁知道如何做到这一点?
注意
我做不了类似的事情
ChildCtrl.prototype = new ParentCtrl();
Run Code Online (Sandbox Code Playgroud)
因为我会覆盖该people
属性ChildCtrl
.
Mar*_*cok 46
默认情况下,子范围原型继承父范围(请参阅范围),因此您已经可以访问子控件中父控制器的$ scope属性.为了证明这一点:
function ChildCtrl($scope) {
alert($scope.people)
}
Run Code Online (Sandbox Code Playgroud)
kst*_*tep 25
你弄错了.您正在将控制器继承与范围继承混合在一起,它们在AngularJS中是不同的并且松散耦合.
你真正想要的是:
function ParentCtrl($scope) {
$scope.people = ["Tom", "Dick", "Harry"];
$scope.count = $scope.people.length;
}
function ChildCtrl($scope) {
$scope.parentpeople = $scope.$parent.people;
}
Run Code Online (Sandbox Code Playgroud)
它适用于案例:
<div ng-controller="ParentCtrl">
<div ng-controller="ChildCtrl">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但正如Mark和ganaraj在上面注意到的那样,这没有任何意义,因为你可以从ParentCtrl和ChildCtrl访问$ scope.people的属性.
如果要相互继承控制器,则需要使用控制器函数本身的原型继承.
$ scope继承基于使用ng-controller引用控制器的位置.
如果你有类似的东西
<div ng-controller="ParentController">
<div ng-controller="ChildController">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
然后是的,子控制器将继承父控制器的属性.
注意:不需要在html中的直接子节点上定义子控制器.它可以是任何孩子.
归档时间: |
|
查看次数: |
32787 次 |
最近记录: |