最近在写angular的时候尝试着用controller as 的语法进行写。其中遇到一个问题就是
var app = angular.module('app', []);
app.controller('appParentCtrl', function(){
this.name = 'XL';
this.sayName = function(){
console.log(this.name);
}
});
app.controller('appChildCtrl', function(){
//我在子控制器里面如何调用父控制器里定义的方法呢?
})
html:
<body ng-app="app">
<div ng-controller="appParentCtrl as appParent">
<div ng-controller="appChildCtrl as appChild">
</div>
</body>
分割线:因为appParentCtrl as appParent
是实例化了appParentCtrl的一个实例控制器,那么appParent是能获取到appParentCtrl
里面的方法的,同理appChildCtrl as appChild
。但是appParent
和appChild
是没直接关系的。appParentCtrl
和 appChildCtrl
也是没有直接关系的。那么我还有什么方法能在子控制器里面调用父控制器里定义的方法呢?
controller 本应该设计成相互独立的,如需要通信,要使用一个单独的 service 。controller 貌似没有层级关系, scope 是有的。一定要这么做,可以试试把方法放到 scope 上,然后 $scope.$parent.function