【问题标题】:Can I keep Vuejs event in HTML data?我可以在 HTML 数据中保留 Vuejs 事件吗?
【发布时间】:2019-03-15 02:30:24
【问题描述】:

我想让 Vue 事件与响应 html 数据一起工作。

1/描述:

  • <template><div id="id_1" v-on:click="method(value)">TEXT</div></template> 中:单击此按钮即可使用。
  • 现在当我有 html 数据替换 id_1 中的内容时,例如:

    var data = "<div id='id_1'>TEXT 2</div>"; $('#id_1').html(data );

我的代码如下:axios -> socket.on -> append or html with event like above.

2/ 问题:我无法将 v-on:click 放入这样的数据中:

&lt;div v-on:click="method(value)" id='id_1'&gt;TEXT 2&lt;/div&gt;

3/ 到目前为止的替代方案:我必须在 Jquery 中创建不同的功能。这意味着一个 vue 文件中有两种方式。它以这种方式工作。有什么办法可以将 vue 事件放入上述数据中?

提前致谢, 广川

【问题讨论】:

    标签: javascript jquery html vue.js


    【解决方案1】:

    我认为您不需要替换整个 HTML。 只需制作一个像这样的模型:

    data() {
      return {
        text: ''
      }
    }
    

    然后处于挂载状态或其他取决于您的情况:

    mounted() {
      let vm = this;
      vm.text = 'test123';
    }
    

    在你的 HTML 中使用这个:

    <template><div id="id_1" v-on:click="method(value)">{{text}}</div></template>
    

    希望对你有帮助:)

    【讨论】:

    • 谢谢你,因陀罗。你的意思是如果我想追加/html新数据,那么代码this.text="new_data",对吗?它工作但我把它放在socket.on中,所以通过Vuejs方式添加新数据不起作用。我仍然不知道原因,并继续尝试找出。
    • 我从不使用 Socket.IO。通常我只使用 axios 获取数据并根据数据呈现 html。你可能需要这个 Vue 提供的重新渲染 API vuejs.org/v2/api/#vm-forceUpdate
    • 知道了,我试试
    猜你喜欢
    • 1970-01-01
    • 2017-05-26
    • 2015-05-27
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2021-10-16
    • 2015-12-28
    相关资源
    最近更新 更多