【发布时间】:2014-12-27 05:16:06
【问题描述】:
如何使用 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!
});
【问题讨论】:
-
不是。我特别问“不假设父控制器是如何别名的”。您链接到的答案不提供此解决方案
-
$scope.$parent 对我来说不是父级的别名
-
不,不是——虽然它不使用继承范围(如果它是
$parent.$parent?)但无论如何,使用Controller-As,可以使用this.vmProperty定义ViewModel,而不是$scope.vmProperty。有了这个,$scope.$parent.vmProperty是未定义的。 -
嗯......你不能将控制器的整个想法明确地用于视图。所以你可以使用Controller As,你可以使用$parent,你也可以像你一样使用点符号。我真的看不出你想在这个问题中找到什么
-
修改问题以澄清
标签: angularjs angularjs-scope angularjs-controller