1

我有一个控制器,它位于另一个控制器内。

<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?

4

1 回答 1

3

正如wiki所说,你不需要做任何事情。只需通过其名称访问它。

<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

在这里拉小提琴。

于 2013-05-27T22:41:42.720 回答