Vue.js选择多个元素

时间:2017-06-26 16:43:15

标签: 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>

但问题在于,Vue只选择第一个div.vue-commenting元素。像这样,

enter image description here 正如你在图像中看到的那样,Vue渲染了&#34;添加评论&#34;按钮仅用于第一个元素!

这是我的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中选择多个元素?

1 个答案:

答案 0 :(得分:3)

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