如何在AngularJS中调用子控制器中的函数?

时间:2014-01-17 08:20:08

标签: angularjs

在我的代码中,我有以下内容:

<html data-ng-controller="appController"
      data-ng-keydown="callFunction($event)">

在单页面应用程序中,我打开一个页面,它有一个detailController,其中包含以下内容:

    $scope.callFunction = function (eventNew) {
        var a = 0;
        if (eventNew.which == 39)
            alert('Right arrow key pressed');
    }

但是这个功能没有被调用。它被调用的唯一时间是 如果函数在appController中编码。

如何在我的detailController控制器中调用该功能?

2 个答案:

答案 0 :(得分:2)

不是直接调用该方法,而是$broadcast一个keydown事件,直到子范围并处理按键事件。

<html data-ng-controller="appController"
      data-ng-keydown="$broadcast('keydown',$event)">

 $scope.$on('keydown', function(event, args) {
    $window.alert('key was down ' + args.which)
  })

答案 1 :(得分:-1)

您不能,因为父控制器(app)无权访问您的子控制器的范围。如果要在detailController的范围内定义callFunction,则必须从详细控制器中调用它。

<html data-ng-controller="appController" >
    <body ng-controller="detailController" data-ng-keydown="callFunction($event)">
    </body>
</html>