Vue.js 选择多个元素

rak*_*btg 3 javascript vue.js vuejs2

我正在尝试用 Vue 替换 jQuery,所以在为单个 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>
Run Code Online (Sandbox Code Playgroud)

但这里的问题是,Vue 只选择了第一个div.vue-commenting元素。像这样,

在此处输入图片说明 正如您在图像中看到的,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
    }
  }
} )
Run Code Online (Sandbox Code Playgroud)

模板代码:

<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>
Run Code Online (Sandbox Code Playgroud)

我应该如何在vue中选择多个元素?

Roy*_*y J 5

您正在提供一个类,el好像它会为每个匹配的项目创建一个 Vue 实例,但它不是那样工作的。您应该提供一个包含您希望 Vue 控制的所有元素的单个元素,或者您应该遍历所有元素并为每个元素创建一个新的 Vue 实例。我强烈建议前者。