在我的代码中,我有以下内容:
<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
控制器中调用该功能?
答案 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>