VueJS:如何强制重新编译 修改dom后

问题描述 投票:0回答:1

在下面的单个文件模板中,我从后端加载用户汽车,将它们存储在商店模块的状态中,然后使用此组件中的结果来构建表。

动作是异步的,所以每次更新汽车列表时我都会使用watch()来重新渲染我的表格。

问题:表的初始化是从Javascript代码进行的,第二列是显示2个按钮。当用户点击其中一个按钮时,我想做点什么:但是@click或者在这里无法识别,因为它们是在组件安装后添加的。

我如何强制重新渲染组件?

<template>
    <div class="col-xl-8">
        <div class="kt-datatable" id="cars_datatable"></div>
    </div>
</template>

<script>
import { mapActions, mapGetters } from "vuex";

export default {
    created: function() {
        this.getUserCars();
    },
    computed: {
        ...mapGetters(["userCars"])
    },
    methods: {
        ...mapActions(["getUserCars"])
    },
    watch: {
        userSites: function() {
            const options = {
                data: {
                    type: "local",
                    source: this.userCars,
                    pageSize: 5
                },
                layout: {
                    theme: "default",
                    class: "",
                    scroll: !1,
                    footer: !1
                },
                sortable: !0,
                pagination: !0,
                columns: [
                    {
                        field: "name",
                        title: "Name"
                    },
                    {
                        field: "Actions",
                        title: "Actions",
                        sortable: false,
                        width: 110,
                        overflow: "visible",
                        autoHide: false,
                        template: function() {
                            return '\
                                <a href="javascript:;" class="btn btn-sm btn-clean btn-icon btn-icon-md" title="Edit details">\
                                    <i class="la la-edit"></i>\
                                </a>\
                                <a href="javascript:;" class="btn btn-sm btn-clean btn-icon btn-icon-md" title="Delete">\
                                    <i class="la la-trash"></i>\
                                </a>\
                            ';
                        }
                    }
                ]
            };
            $("#cars_datatable").KTDatatable(options);
        }
    }
};
</script>

<style></style>
javascript vue.js vuejs2
1个回答
1
投票

我看到你已经在使用JQuery,所以最简单的解决方案是使用动态jQuery.fn.on方式来注册事件处理程序。该处理程序将识别您动态添加的元素。 Read more here

© www.soinside.com 2019 - 2024. All rights reserved.