如何让子控制器继承AngularJS中的父控制器范围?

时间:2015-04-23 17:07:26

标签: angularjs

如果我在AngularJS中有一个嵌套控制器(一个控制器继承自另一个控制器),如何让子控制器无法访问父控制器的范围?这被问到我的面试问题。

2 个答案:

答案 0 :(得分:2)

无法隔离控制器的范围:

  

以下创建新范围,并继承原型:ng-repeat,ng-include,ng-switch,ng-view, ng-controller ,范围为:true的指令,带transclude的指令:真正。 doc

要创建隔离范围,应使用指令而不是控制器。确保在指令声明中定义了范围属性。 doc

答案 1 :(得分:2)

仅使用ng-controller就无法隔离示波器,但是您可以通过返回控制器而不是将它们放在示波器上来隔离控制器上的方法。

.controller('myCtrl', function() {
    return {
        doStuff: function() {
        }
    }
})

子控制器无法访问doStuff功能。使用它的唯一方法是使用controller as

<div ng-controller="myCtrl as parentCtrl">
    <button ng-click="parentCtrl.doStuff()"/>
</div>