我正在尝试测试一个使用angular $ document元素来附加事件处理程序的指令。但是,当我使用Jasmine和angular mocks对它进行测试时,当指令的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'
答案 0 :(得分:1)
这不起作用,因为链接功能不支持依赖注入。如关于directives的文档中所述,链接函数接受4个参数 - 范围,元素,属性和控制器。
link: function(scope, element, attributes, controller) {
// do the linking here
}
Here是一段视频,详细介绍了这一点。