Vue.js выбирает несколько элементов

1

Я пытаюсь заменить jQuery на Vue, поэтому да, когда проблема возникает при выборе нескольких элементов для одного экземпляра Vue.

Например,

У моего сайта есть сообщение об отправке, у которого есть форму комментария. Я хочу отобразить форму комментария с помощью vue для всех сообщений.

Вот HTML:

<div class="post">
  <h1>This is first post</h1>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Temporibus, delectus, vero! 
    Aut adipisci fuga, dolorem optio sunt mollitia, debitis eius magni totam sint harum provident ipsa, 
    corporis eligendi dolorum hic!
  </p>
  <hr>
  <div class="vue-commenting"></div>
</div>

<div class="post">
  <h1>This is second post</h1>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Temporibus, delectus, vero! 
    Aut adipisci fuga, dolorem optio sunt mollitia, debitis eius magni totam sint harum provident ipsa, 
    corporis eligendi dolorum hic!
  </p>
  <hr>
  <div class="vue-commenting"></div>
</div>

Но проблема здесь в том, что Vue только выбирает первый div.vue-commenting. Вот так,

Изображение 174551, как вы можете видеть на изображении, Vue отобразило кнопку "Добавить комментарий" только для первого элемента!

Вот мой код Vue:

let app = new Vue( {
  el: '.vue-commenting',
  template: '#add-comment-template',
  data: {
    message: 'Commenting going here ...',
    visibleForm: false
  },
  methods : {
    ToggleReplyForm: function ( event ) {
      event.preventDefault()
      this.visibleForm = ! this.visibleForm
    }
  }
} )

Шаблонный код:

<script type="text/x-template" id="add-comment-template">
  <div>
    <a 
      href="#"
      class="btn btn-success"
      v-on:click="ToggleReplyForm">
      Add a comment
    </a>
    <div class="clearfix"></div>

    <br/>

    <div 
      v-if="visibleForm"
      class="panel panel-default">

      <div class="panel-heading">
        Comment Form
      </div>
      <div class="panel-body">
        <div class="form-group">
          <label for="un">Name</label>
          <input type="text" class="form-control" id="un">
        </div>
        <div class="form-group">
          <label for="uc">Comment</label>
          <textarea class="form-control" id="uc" rows="3"></textarea>
        </div>
      </div>
      <div class="panel-footer">
        <button
          class="btn btn-warning">
          Post Comment
        </button>
      </div>
    </div>

  </div>
</script>

Как выбрать несколько элементов в vue?

  • 0
    Возможно, этот ответ может помочь stackoverflow.com/a/31882776/2399208
  • 0
    Я вижу несколько проблем здесь, в основном вы используете класс в качестве тега просмотра el. Может помочь в дальнейшем, если вы можете поделиться своим шаблоном, а также.
Показать ещё 1 комментарий
Теги:
vue.js
vuejs2

1 ответ

3

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню