Ngx-drag-scroll: Предотвращение распространения щелчков сразу после перетаскивания

Созданный на 11 окт. 2017  ·  13Комментарии  ·  Источник: bfwg/ngx-drag-scroll

Мне было интересно, была ли у кого-нибудь проблема с запуском события щелчка после перетаскивания?

Мой контейнер - это огромный список изображений со ссылками на специальную страницу.

Иногда, когда перетаскивание инициируется поверх изображения, событие щелчка запускается при отпускании мыши.

Есть ли простой способ предотвратить это?

Я думал о добавлении класса без щелчка к контейнеру, а затем добавлению прослушивателя событий щелчка ко всем дочерним элементам, который будет проверять, есть ли у родителя класс без щелчка, а затем остановить распространение события, если триггеры мыши срабатывают в течение 100 мс после состояние перетаскивания закончилось.

В настоящее время закомментированный e.preventDefault () из-за ранее сообщенной проблемы (https://github.com/bfwg/angular2-drag-scroll/issues/16) связан с этим нежелательным поведением. Однако лучшим решением было бы предотвратить щелчок, только если он был инициирован сразу после остановки события перетаскивания .

Все 13 Комментарий

@Sprauch
Благодарим за сообщение об этой проблеме. Хотите сообщить об этой ошибке?

Нет, я еще слишком новичок в этом. Начала разработку на Angular менее 18 месяцев назад и вчера присоединилась к GitHub;)

Не беспокойтесь, я постараюсь исправить это, когда у меня будет время.

Привет, ребята, у меня тоже есть эта проблема, есть ли прогресс с исправлением / обходным решением?

Привет @ stuart-clark-45

Я работаю над выпуском версии 2.0, надеюсь, к тому времени эта проблема исчезнет. Если нет, я вернусь и исправлю.

@bfwg это большое спасибо, очень хорошая маленькая библиотека, кроме этой ошибки. У вас есть идеи, когда вы можете выпустить v2.0?

@ Стюарт-Кларк-45

Нет проблем, прогресс 2.0 можно отслеживать в # 66 # 68. После небольшого расследования проблему решить сложнее, чем я ожидал. Я постараюсь создать новый PR, чтобы исправить это сразу после релиза 2.0. Извините за задержку.

@bfwg Отлично, похоже, ты в порядке, спасибо большое: thumbsup:

Я не знаю, связано ли это, но я не могу выделить текст ни в одном из моих приложений angular с помощью мыши и выделения текста. Это происходит после импорта DragScrollModule. Я зашел на демонстрационную страницу, и проверил, что выделение текста также не работает на этой странице.

Единственный способ выделить текст прямо сейчас в любом месте страницы - это использовать двойной щелчок мышью и клавиатуру для выделения текста ...

Есть ли что-нибудь, что можно сделать временно, чтобы изменить это поведение?

Я решил это, используя (sizesLeftBound), чтобы выяснить, перетаскивается ли он, чтобы предотвратить щелчок.
Добавьте (sizesLeftBound) в ваш dragScroll
<div dragScroll [scrollbar-hidden]="true" (reachesLeftBound)="leftBoundStat($event)">
Добавьте события мыши в свой div и т. Д.
<div (mousedown)="down()" (click)="fire()">
В вашем component.ts добавьте следующее

click = false;
leftBoundStat(event: any): void {
        if (this.click) {
            this.click = false;
        }
    }

    down() {
        console.log('Mouse down');
        window.setTimeout(this.startCheck(), 1000);
    }

    fire() {
        if (this.click) {
            console.log('Fire the action');

        }
    }
startCheck() {
        this.click = true;
    }

Это предотвратит щелчок, если он должен был перетаскиваться.
КСТАТИ, скрытая полоса прокрутки у меня все еще не работает. Если кто-нибудь знает, как заставить его работать, я был бы признателен за строчку :)

Привет, @STIKO , можешь дать мне ссылку на плункер, чтобы я мог рассмотреть ее поближе?

Я не мог заставить его работать в плункере, так как никогда не использовал его раньше.
Я импортировал его в app.module.ts
import {DragScrollModule} from 'ngx-drag-scroll';
Затем я добавил его в @NgModule импорт того же файла
imports: [DragScrollModule];
Я предполагаю, что вышеизложенное верно, поскольку перетаскивание работает.
Теперь в моем компоненте

export class Example implements OnInit {
   @Input() 'scrollbar-hidden': boolean;
}

Не уверен, нужен ли @Input() . наконец шаблон

<div dragScroll scrollbar-hidden="true"
         drag-scroll="true"
         drag-scroll-y-disabled="true"
         snap-disabled="true">

          <div style="display: inline">
            <img src='http://via.placeholder.com/310x471'/>
          </div>
          <div style="display: inline">
            <img src='http://via.placeholder.com/310x471'/>
          </div>
          <div style="display: inline">
            <img src='http://via.placeholder.com/310x471'/>
          </div>
      </div>
</div>

Все работает нормально, за исключением случаев, когда я прокручиваю полосу прокрутки, хотя я установил для параметра disable значение true

Можете ли вы попробовать удалить оболочку div для тега img и указать им ширину и высоту?
Что-то вроде ниже. Посмотрите, решит ли это проблему для вас.

@Component({
  selector: 'my-app',
  styles: [`
    .image-cell: {
      width: 310px;
      height: 470px;
    }
  `]
  template: `
    <div>
      <h2>Hello {{name}}</h2>
      <div dragScroll 
         drag-scroll-y-disabled="true"
         scrollbar-hidden="true"
         snap-disabled="true" style="height: 470px; width: 310px;">
          <img class="image-cell" src='http://via.placeholder.com/310x471'/>
          <img class="image-cell" src='http://via.placeholder.com/310x471'/>
          <img class="image-cell" src='http://via.placeholder.com/310x471'/>
      </div>
    </div>
  `,
})
Была ли эта страница полезной?
0 / 5 - 0 рейтинги