3

我想(单元)测试我的 AngularJS 应用程序而不使用 jQuery,因为 jQuery 将取代 jqLit​​e,而在真正的应用程序中 jQuery 也将不可用。jQuery 和 jqLit​​e 之间存在真正的区别,因此在单元测试中让 jQuery 可用于 AngularJS 是有风险的。

我的大多数测试现在在没有 jQuery 的情况下都可以正常工作,但是我需要为转义键触发 keydown,我只能找出如何使用 jQuery。我将如何以跨浏览器的方式在 Javascript 中做到这一点?

该指令侦听转义键,如下所示:

body.bind('keydown', handledEscapeKey);
var handledEscapeKey = function(e) {
  if (e.which === 27) {
    e.preventDefault();
    scope.$apply(scope.hideTooltip());
  }
};

我已经尝试过了,但它似乎不起作用:

if( window.KeyEvent ) {
  var evObj = $document.createEvent('KeyEvents');
  evObj.initKeyEvent( 'keydown', true, true, $window, false, false, false, false, 27, 0 );
} else {
  var evObj = $document.createEvent('UIEvents');
  evObj.initUIEvent( 'keydown', true, true, $window, 1 );
  evObj.keyCode = 27;
}

elm[0][0].dispatchEvent(evObj);
4

1 回答 1

-3

您可以签出 Angular UI @ http://angular-ui.github.io/ui-utils/

<textarea ui-keydown="{27:'keydownCallback($event)'}"></textarea>
于 2013-08-06T09:34:36.417 回答