我有一个控制器在另一个控制器内。
<div ng-controller="post">
<div ui-if="isAllowed">
<footer ng-controller="footer"></footer>
</div>
</div>
我相信ui-if会创建一个新的范围,因此这里有3个范围。
我希望页脚控制器能够访问帖子的范围。
.controller('post', function($scope) {
$scope.foo = "bar"
})
我可以很容易地做$scope.$parent.$parent.foo
但我读到范围应该自动从父级继承,而父级的东西只是超级笨拙。
引自Angularjs wiki:
(如果你真的想通过控制器范围继承来共享数据, 没有什么是你需要做的。子范围可以访问 所有父作用域属性。另请参阅控制器加载顺序 加载或导航时有所不同)
如何从页脚范围访问foo?
答案 0 :(得分:3)
正如维基所说,你不需要做任何事情。只需通过其名称访问它。
<div ng-controller="post">
<div ui-if="isAllowed">
<footer ng-controller="footer">
{{ fooB }}
</footer>
</div>
</div>
function post($scope) {
$scope.fooA = 'Foo A';
}
function footer($scope) {
$scope.fooB = $scope.fooA + " and Foo B";
}
例如,上面将呈现Foo A and Foo B