vue.js - 将vue组件绑定(bind)到类名

标签 vue.js

好吧,所以我试图将这个 vue 组件绑定(bind)到一个类名,以便它在每个具有此类的元素上触发,但发生的是它只适用于第一个元素,而不适用于其他元素

<div class="__comment_post"> 
    <textarea></textarea> 
    <input type="submit" v-on:click="submitComment" /> <!-- submit comment being only triggered on this one -->
</div>


<div class="__comment_post">
    <textarea></textarea> 
    <input type="submit" v-on:click="submitComment" />
</div>


<div class="__comment_post">
    <textarea></textarea> 
    <input type="submit" v-on:click="submitComment" />
</div>

正如您在上面看到的,我有 3 个 __comment_post 类的 div,因此 submitComment 自然应该绑定(bind)到所有这 3 个 div,但发生的是 submitComment 仅在第一个上被触发

var app = new Vue({

    el:".__comment_post",
    data: {
        comment: ""
    },


    methods: {
        submitComment: function() {
            console.log("Test");
        }
    }

});

最佳答案

这是您和其他人可以遵循的一个小示例,以便将 vue 实例绑定(bind)到类名。
比方说,你想将 Vue 绑定(bind)到多个现有的 <div class="comment"> HTML 中的元素。

HTML:

<div class="comment" data-id="1">

<div>

<div class="comment" data-id="2">

<div>

现在,您可以在您的示例中尝试以下逻辑/代码。

JS:

var comments = {
  "1": {"content": "Comment 1"},
  "2": {"content": "Comment 2"}
}

$('.comment').each(function () {
  var $el = $(this)

  var id = $el.attr('data-id')
  var data = comments[id]

  new Vue({
    el: this,
    data: data,
    template: '<div class="comment">{{ content }}<div>'
  })
})

我希望这会回答你的问题:)

关于vue.js - 将vue组件绑定(bind)到类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49667161/

相关文章:

javascript - Vue 模板不更新

arrays - 如何在 Vue 2 组件的数组中添加和删除项目

javascript - 如何使用 Vue 3 并添加插件 Bootstrap-vue?

javascript - Vue 组件只有在模板中存在值时才会响应

javascript - 如何访问在较低(父)级别声明的 Vue 对象的属性?

javascript - Vue.js 如何上传图像并在之后运行自定义方法

css - 如何使用 Vue 渲染 CSS 网格的标记?

javascript - 如何使用 Vue.js 在 bootstrap-select 下拉列表中设置默认值

javascript - 在 url 中推送查询参数时,Vue.js 中的 "NavigationDuplicated"异常是否有任何解决方法,同时保持在同一路径上

javascript - 如何让 `nuxt generate`生成的html完全静态化?