Angularjs继承父范围混淆

时间:2013-05-27 22:38:00

标签: angularjs angularjs-scope

我有一个控制器在另一个控制器内。

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

1 个答案:

答案 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

Fiddle here.