javascript - Vue.js 选择多个元素

标签 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 只为第一个元素呈现了“添加评论”按钮!

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

最佳答案

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

关于javascript - Vue.js 选择多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44764547/

相关文章:

javascript - 如何停止调用服务器端事件

javascript - 你如何在 nuxt 3 上获得很棒的字体设置

javascript - 扎 PIL 还是自己动手?

html - 全局覆盖 Vuetify 分隔线颜色

javascript - 使用 vue 分布式文件中定义的函数

javascript - 单页 Web 应用程序设计

javascript - 绕过 Firefox 的刷新行为

javascript - 获取ReactJS中每个父评论的最深评论

firebase - 如何在 nuxt 3 中设置 google firebase 函数区域?

javascript - Vue.js 中 'data:' 、 'data: ()' 和 'data()' 之间有什么区别