如何使用角度为2/4的鼠标滚轮事件测试指令 [英] How to test a directive with a mouse wheel event in angular 2 / 4
本文介绍了如何使用角度为2/4的鼠标滚轮事件测试指令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个带有鼠标滚轮事件的指令,用于放大和缩小画布.我想知道如何为此类事件编写单元测试.我在网上找不到任何示例,有人能指出我正确的方向吗?
I have a directive which has a mouse wheel event, it is used to zoom in and out a canvas. I would like to know how can I write a unit test for such an event. I couldn't find any example online, could anyone point me in a right direction?
我的指令:
import { Directive, ElementRef, HostListener} from "@angular/core";
import { MyService } from "./my-service";
@Directive({
selector: "[testDirec]"
})
export class Test {
private initPointX: number;
private initPointY: number;
constructor(private ele: ElementRef,
private serviceInstance: MyService) {
}
@HostListener('mousewheel', ['$event'])
scroll(event: MouseEvent) {
console.log("Entered mouse wheel");
let wheelDelta = Math.max(-1, Math.min(1, (event.wheelDelta || -event.detail)));
if(wheelDelta > 0) {
factor = 0.5;
}else {
factor = 2.0;
}
this.initPointX = event.PageX;
this.initPointY = event.PageY;
}
}
推荐答案
您应该使用transform并对其进行测试.如下
You should be using transform and test it. as below
<div scrollstyle="height:1000px;background-color:red">
<input type="text" value=""/>
</div>
@Directive({
selector: '[scroll]'
})
export class ChangeDirective{
i:number=1;
constructor(
private renderer: Renderer,
private el: ElementRef
){}
@HostListener('mousewheel', ['$event']) onMousewheel(event) {
if(event.wheelDelta>0){
event.srcElement.style.setProperty('transition','all 200ms ease-in')
event.srcElement.style.setProperty('transform',"scale(" + this.i+1 +")")
}
if(event.wheelDelta<0){
event.srcElement.style.setProperty('transition','all 200ms ease-out')
event.srcElement.style.setProperty('transform',"scale(" + this.i-1 +")")
}
}
}
LIVE DEMO
这篇关于如何使用角度为2/4的鼠标滚轮事件测试指令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文