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