AngularJS嵌套控制器 - 如何调用外部控制器的功能

时间:2017-08-23 14:39:27

标签: angularjs

我正在书中练习,所以我不知道我是否犯了任何错误。 我有两个控制器都具有相同名称的功能:

app.controller('externalController', ['$scope', function(scope){
  scope.aFunction(){
  //Some code...
  };
}]);

app.controller('innerController', ['$scope', function(s){
  s.aFunction(){
  //Some code...
  };
}]);

在书中,外部控制器的功能就是这样:

<div ng-controller="externalController as Ext">
  <div ng-controller="innerController">
    <button ng-click="Ext.aFunction()>Button</button>
  </div>
</div>

这对我不起作用,任何人都可以告诉我,如果我犯了任何错误或代码中有什么问题吗? 非常感谢。 莫罗

1 个答案:

答案 0 :(得分:0)

基本上你使用控制器作为语法,并且你在控制器aFunction内绑定了$scope,而应该将它绑定到控制器this

当使用controllerAs语法时,控制器变量和方法应该绑定到this(上下文),当你使用controller as时,控制器context(this)通过它暴露在HTML上alias

app.controller('externalController', [function() {
  var Ext = this;
  Ext.aFunction = function() {
    alert('Function Called');
    //Some code...
  };
}]);

app.controller('innerController', [function() {
  var inner = this;
  inner.aFunction = function() {
    //Some code...
  };
}]);

Working Plunker