Получить id элемента при клике на него Vue.js

230
19 июля 2018, 17:50

У меня создается список, из элементов которого по клику нужно получить id, но у меня не получается это сделать. Как можно получить id? Заранее спасибо.

<template>
    <div class="page">
      <div class="navbar">
        <div class="navbar-inner sliding">
          <div class="left">
            <a href="#" class="link back">
              <i class="icon icon-back"></i>
              <span class="ios-only">Назад</span>
            </a>
          </div>
          <div class="title">Задачи</div>
          <div class="right">
            <a href="#" class="link open-prompt-custom" @click="add">
              <i class="icon f7-icons ios-only">add</i>
              <i class="icon material-icons md-only">add</i>
            </a>
            <a href="#" class="link" @click="refresh">
              <i class="icon f7-icons ios-only">refresh</i>
              <i class="icon material-icons md-only">refresh</i>
            </a>
          </div>
          <div class="subnavbar">
            <form data-search-container=".virtual-list" data-search-item="li" data-search-in=".item-title" class="searchbar searchbar-init">
              <div class="searchbar-inner">
                <div class="searchbar-input-wrap">
                  <input type="search" placeholder="Поиск по задачам"/>
                  <i class="searchbar-icon"></i>
                  <span class="input-clear-button"></span>
                </div>
                <span class="searchbar-disable-button">Отмена</span>
              </div>
            </form>
          </div>
        </div>
      </div>
      <div class="searchbar-backdrop"></div>
      <div class="page-content">
        <div class="list simple-list searchbar-not-found">
          <ul>
            <li>Задачи отсутствуют</li>
          </ul>
        </div>
        <div class="list virtual-list media-list searchbar-found"></div>
      </div>
    </div>
  </template>
<script>
  return {
    data: function() {
      var items = [];
      var userId = window.localStorage.getItem("userId");
      console.log(userId);
      app.request.getJSON('http://127.0.0.1:8000/api/taskRoomShow/' + userId, function(data) {
        console.log(data);
        for (var i = 0; i <= data.data.length; i++) {
          items.push({
            id: data.data[i].id,
            title: data.data[i].name,
            subtitle: "Задача"
          });
        }
      });
      return {
        items: items
      };
    },
    on: {
      pageBeforeRemove: function() {
        var self = this;
        self.virtualList.destroy();
      },
      pageInit: function() {
        var self = this;
        self.virtualList = self.$app.virtualList.create({
          el: self.$el.find('.virtual-list'),
          items: self.items,
          searchAll: function(query, items) {
            var found = [];
            console.log(data);
            for (var i = 0; i < items.length; i++) {
              if (items[i].title.toLowerCase().indexOf(query.toLowerCase()) >= 0 || query.trim() === '') found.push(i);
            }
            return found;
          },
          itemTemplate: '<li>' +
            '<a href="/tasks-room/" id={{id}}  class="item-link item-content">' +
            '<div class="item-inner">' +
            '<div class="item-title-row">' +
            '<div class="item-title">{{title}}</div>' +
            '</div>' +
            '<div class="item-subtitle">{{subtitle}}</div>' +
            '</div>' +
            '</a>' +
            '</li>',
          height: self.$theme.ios ? 63 : 73,
        });
      }
    },
    methods: {
      refresh: function() {
        var router = this.$router;
        router.refreshPage()
      },
      add: function() {
        app.dialog.prompt('Укажите название новой комнаты задач', 'Новая комната задач', function(trName) {
          if (trName != "") {
            app.dialog.confirm('Вы уверены, что новая комната задач будет называться ' + trName + '?', 'Подтверждение', function() {
              var id = window.localStorage.getItem("userId");
              app.request.postJSON('http://127.0.0.1:8000/api/taskRoomNew/', {
                name: trName,
                user_id: id
              }, function(data) {
                console.log("Успех");
              });
            });
          } else app.dialog.alert("Что-то пошло не так!", 'Сообщениие об ошибке');
        });
      },
    }
  }
</script>

Я пытался решить проблему прописывая метод getId и вызывать его в самом теге 'a' по клику @click="getId(this)":

  getId: function(obj) {
    console.log(obj.id);
  }
READ ALSO
При oninput на &lt;textarea&gt; появляются множество строк &lt;p&gt;. При клике на &lt;p&gt; нужно получить его innerHTML

При oninput на <textarea> появляются множество строк <p>. При клике на <p> нужно получить его innerHTML

Имеется textarea#text и отдельно стоящий divПри вводе текста (oninput) формируется ajax-запрос, который выводит в div (ранее совершенно пустой) строки до 600 штук...

191
js Плавная анимация блока

js Плавная анимация блока

Вообщем есть блок с паралаксом полный код приводить не буду он чутка большойВысота данного блока статична так же в этом блоке есть кнопка...

217
не работает кластеризация google maps

не работает кластеризация google maps

Подключаю гугл карту, на которой расположено несколько точек, точки выводятся,но при добавлении кластеризации выводится одна точка и то кластеризация...

210
javascript: scrollTo по клику не работает после slideToggle

javascript: scrollTo по клику не работает после slideToggle

Для второго действия хочу добавить также прокрутку наверх, к элементу id=sometopid, а то после исчезновения hiddencontent оказываемся в случайной точке...

182