• Почему v-on:click не работает, а v-on:mouseout работает?

    MrDecoy
    @MrDecoy
    Верставший фронтендер
    Потому что мат часть нужно сначала учить, прежде чем во фреймворки суваться...

    У Вас на container висит обработчик клика.
    События, большинство, всплывают.
    Сначала при клике срабатывает one
    а потом changeTwo, висящий на container, где меняется всё обратно.

    Соответственно, когда у Вас было при наведении, то и не было "конфликта" с обработчиком клика на container, так как это разные события.

    Что делать - не делать такую жуткую кашу с вложенными "интерактивными элементами".
    А если никак - то гуглить модифкатор .stop во vue или event.stopPropagation.

    https://learn.javascript.ru/events
    Ответ написан
    Комментировать
  • Как сделать закрытие меню по нажатию на любую область экрана?

    @oexlkinq
    можно, например, слушать клики на document и проверять, является ли элемент меню родителем для event.target
    Ответ написан
    7 комментариев
  • В чем отличие this.sort от this[sort]?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    - this.sort обращается напрямую к свойству объекта.
    - this[sort] использует вычисляемое имя свойства.
    const obj = {
      sort: 1,
      noSort: 2,
    }
    
    const x = 'noSort';
    
    console.log(obj.sort) // 1
    
    console.log(obj[x]) // 2
    // эквивалент в этом примере
    console.log(obj['noSort']) // 2
    Ответ написан
    3 комментария
  • В чем отличие this.sort от this[sort]?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    const sort = 'other';
    const any  = 'other';
    
    const obj = {
      sort: 'my name is sort',
      other: 'my name is other',
    
      test() {
        console.log(this.sort);  // 'my name is sort'
        console.log(this[sort]); // 'my name is other'
        console.log(this[any]);  // 'my name is other'
      }
    }
    
    obj.test();
    Ответ написан
    Комментировать
  • Как отсортировать массив элементов?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Чтоб сортировать весь массив - надо сортировать весь массив.
    v-for="(item, index) in currentPageSortedList"
    data: {
      list: [...bread[0]], // или просто bread? х.з. не ясно, что там
      // ...
    },
    computed: {
      sortedList() {
        const sort = {
          "По популярности": "changePopular",
          "По возрастанию цены": "changePlus",
          "По уменьшению цены": "changeMinus",
          "Сначала обсуждаемые": "changeDiscussed",
          "Сначала с лучшей оценкой": "changeBest"
        }[this.selected];
        // лишний slice здесь для того чтобы клонировать массив
        // т.к. sort мутирует исходный  
        return sort ? this.list.slice().sort(this[sort]) : this.list;    
      },
      currentPageSortedList() {
        const perPage = 6;
        const position = this.currentPage * perPage;   
        
        return this.sortedList.slice(position, position + perPage);;
      },
      // ...
    },
    watch: {
      // при смене выбора скидываем на первую страницу
      selected() {
        this.currentPage = 0;
      }
    }
    Ответ написан
    4 комментария