AngularJS, различать события перетаскивания и нажатия и передавать данные в событие нажатия - PullRequest
0 голосов
/ 07 июля 2019

Я использую плагин wheelZoom для прокрутки и масштабирования с помощью колесика мыши.Теперь я пытаюсь добавить возможность открыть изображение в новой вкладке, нажав на нее.Проблема в том, что при dragging генерируется событие click.Мне нужно изолировать события drag и click, чтобы включить различные возможности.Я нашел способ определить, что drag и что click.Как я могу передать event или объект, который в данный момент нажат, в функцию, которая обрабатывает щелчки?

TS:

constructor(private $element: ng.IRootElementService) {
    angular.element(function () {
        const element = angular.element( document.querySelector( '#imageZoom' ) );
        let drag = false;
        element.bind('mousedown', () => drag = false);
        element.bind('mousemove', () => drag = true);
        element.bind('mouseup', () => console.log(drag ? 'drag' : this.openImgNewTab(noteObj)));

    });
}

private openImgNewTab(noteObj){
   //pass the event and\or the object that was clicked on?
   //...
  //.. open the image of the note in a new tab using noteObj.path

}

HTML:

<image-zoom class="thumbnail"
            id="imageZoom"
            image-url="{{ $ctrl.options.note.url}}">
</image-zoom>

1 Ответ

0 голосов
/ 07 июля 2019

Чтобы различать тип события, используйте свойство type объекта event:

element.on('mousedown mousemove mouseup click', (event) => {
    console.log(event.type);
});

Для получения дополнительной информации см.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...