• Почему не получается отписаться от события?

    Потому что removeEventListener должен вызываться с указателем на ту функцию от которой ты хочешь отписаться в качестве второго аргумента (указывать должны на один и тот же объект в памяти), а у тебя он вызывается с двумя абсолютно разными функциями (одинаковый код в функциях это не тоже самое что указатель на один и тот же объект в памяти).
    https://developer.mozilla.org/en-US/docs/Web/API/E...
    Это событие отписывается не от всех слушателей, а от одного конкретного, указатель на который ты передашь в аргумент.
    Грубо говоря, сначала регистрируешь функцию, которая будет слушателем, а потом одну и туже функцию используешь и в addEvent и в remove
    Ответ написан
    1 комментарий
  • Можно ли объявлять методы и тд по условию?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Какие проблемы?
    created() {
      if(mobile){
        this.touchStart = () => {}
      }
    }

    Но поскольку mobile или не mobile определяется один раз в жизни приложения, то логичней вынести определение функций\методов в отдельный файл, типа:
    let touchStart;
    if(mobile){
      touchStart = function() {}
    } else {
      touchStart = function() {}
    }
    
    export {
      touchStart
    }
    import {touchStart, ...} from './helpers';
    methods: {
      touchStart,
      ...
    }

    Либо как миксин:
    const touchMixin = {
      methods: mobile ? {
        touchStart() {}
      } : {
        touchStart() {}
      }
    }
    mixins: [touchMixin],
    Ответ написан
    2 комментария