当前位置: 首页 > 面试题库 >

如何使用特定的假“事件”参数调用triggerHandler?

宋弘壮
2023-03-14
问题内容

我试图测试在链接上单击“ preventDefault”是否被调用。但是,我很难用我可以监视的对象来替换一个真实的“事件”对象:

这是触发点击事件的方式:

var e = jasmine.createSpyObj('e', [ 'preventDefault' ]);
$element.triggerHandler('click', [e]);

但是,在运行指令代码时,事件元素不会被伪造的事件元素替代:

$element.on('click', function(event) {
    console.log(event);
}

我尝试了不同的方法向触发器处理程序添加第二个参数-
作为数组,对象,只是一行,等等。都没有用。.同时没有太多的触发器处理程序示例和附加参数,所以我有点丢失…

提前致谢!


问题答案:

文档说triggerHandler()将虚拟对象传递给处理程序:http
:
//docs.angularjs.org/api/ng/function/angular.element

如果检查源,则可以看到triggerHandler()创建了自己的事件对象,然后将第二个参数作为事件数据而不是实际事件对象传递:

https://github.com/angular/angular.js/blob/master/src/jqLit​​e.js#L882

相关代码:

var event = [{
  preventDefault: noop,
  stopPropagation: noop
}];

forEach(eventFns, function(fn) {
  fn.apply(element, event.concat(eventData));
});

我已经使用jQuery的内部事件模拟器来创建自己的事件。可能对您有用:http :
//wingkaiwan.com/2012/09/23/triggering-mouse-events-with-jquery-simulate-
when-testing-in-javascript/



 类似资料:
  • 我在TypeScript中有一个React组件,看起来像这样: 我希望能够指定我的propTypes()中的函数使用对象,但我不知道怎么做。

  • 我将JRE7与Apache POI3.7一起使用。有人能帮我用事件API获得特定的行吗?

  • 本文向大家介绍如何使用Firebug调试JavaScript / jQuery事件绑定?,包括了如何使用Firebug调试JavaScript / jQuery事件绑定?的使用技巧和注意事项,需要的朋友参考一下 假设事件处理程序已附加到您的元素。对于例如, 然后,您可以像这样调试它: 对于jQuery 1.3.x 对于jQuery 1.4.x  对于jQuery 1.8.x +

  • 我想模拟特定参数的方法调用并为其他参数调用真正的方法。我有: 这样,我就得到了folderDAO的模拟结果。getFoldersHierarchy(EHierarchyType.CLIENT\u DOC)但是当我尝试用任何其他参数调用它时,我得到了NullPointerException 那么,我做错了什么,或者应该如何只针对特定参数存根方法调用呢? junit-jupiter api: 5.4.

  • 问题内容: 我在站点的文档上有一些ajax调用,这些调用根据ajax状态显示或隐藏进度条 我想基本上在网站的其他部分覆盖这些方法,这些地方会进行许多快速的小型ajax调用,并且不需要弹出和弹出进度条。我试图将它们附加到其他$ .getJSON和$ .ajax调用中或将其插入。我已经尝试过将它们链接起来,但是显然那不好。 问题答案: 2018注意: 此答案已过时; 您可以随时对这个答案进行修改,以解