使用ControllerAs语法从子控制器访问父作用域

时间:2014-10-30 23:39:53

标签: angularjs angularjs-scope angularjs-controller

如何使用Controller-As方法实现以下目标:

app.controller("parentCtrl", function($scope){
   $scope.parentObj = {prop1: "not set", prop2: "something"};
   $scope.doSomething = function(){...}
})
.controller("childCtrl", function($scope){
   $scope.parentObj.prop1 = "changed";
});

<div ng-controller="parentCtrl">
  {{prop1}}
  <div ng-controller="childCtrl">
    {{prop2}}
    <button ng-click="doSomething()">Do</button>
  </div>
</div>

没有假设父控制器在视图中的别名 ,即没有{{pc.prop2}}

换句话说,我想在使用Controller-As方法时受益于范围继承。问题是如何

app.controller("parentCtrl", function(){
   this.parentObj = {prop1: "not set", prop2: "something"};
   this.doSomething = function(){...}
})
.controller("childCtrl", function($scope){

   // $scope.parentObj is undefined!
});

1 个答案:

答案 0 :(得分:3)

当您使用as语法定义控制器,然后访问子控制器中的父范围变量时,请使用以下命令:

var userData = $scope.parentCtrl.user;

其中parentCtrl是使用as语法的父控制器的名称,而user是在同一控制器中定义的变量。