1

我正在尝试测试使用角度 $document 元素附加事件处理程序的指令。但是,当我使用 Jasmine 和 Angular 模拟对其进行测试时,当指令的 linkfn 执行时出现错误。

指令是这样的:

angular.module('myDirective', []).directive('myDirective',
function () {
    function keydownHandler(ev) {
        alert('keydown');
    }
    return {
        template: '<input type="text" />',
        link: function ($scope, $document) {
            $document.on('keydown', keydownHandler);
        }
    }
});

错误:

TypeError: Object #<Object> has no method 'on'
4

1 回答 1

1

这不起作用,因为链接函数不支持依赖注入。如有关指令的文档中所述,链接函数接受 4 个参数 - 范围、元素、属性和控制器。

link: function(scope, element, attributes, controller) {
  // do the linking here
}

是一个更详细地描述这一点的视频。

于 2013-10-04T11:16:44.420 回答