仅使用ng-controller无法隔离作用域,但是您可以通过在控制器上返回方法而不将它们放在作用域上来隔离这些方法。 .controller('myCtrl', function() { return { doStuff: function() { } } }) 子控制器将无法访问doStuff函数。使用它的唯一方法是使用controller as。 <div ng-controller="myCtrl as parentCtrl"> <button ng-click="parentCtrl.doStuff()"/> </div>
无法隔离控制器的作用域: 以下内容创建新的作用域,并且从原型继承:ng-repeat、ng-include、ng-switch、ng-view、ng-controller、具有scope:true指令、具有transclude:true指令。 文档 为了创建一个隔离的作用域,你应该使用指令而不是控制器。确保在指令声明中定义了一个scope属性。文档