【问题标题】:JQuery Datatable don't recognize vue methods in render columnJQuery Datatable 无法识别渲染列中的 vue 方法
【发布时间】:2018-08-24 16:36:54
【问题描述】:

我正在尝试将纯 Jquery 数据表与 Vue 一起使用,但数据表不识别 vue 方法,也不编译 vue 组件。我正在尝试使用@click 或 v-on:click。有什么想法吗?

我的 Index.vue 文件。当我点击第二个按钮时,@click="sendForApproval()"

不起作用
<script>

export default {
    data() {
        return {
            listPendents: {},
        }
    },

    methods: {
        sendForApproval(id) {
            console.log('Hey!' + id);
        },
        initDatatables() {

            this.dtPendents = $('#data-table-pendents').DataTable({
                "dom": '<frtp><"clearfix">',
                "ajax": '/v2/ajax/campaigns?status_id=5',
                "language": {
                    "url": "//cdn.datatables.net/plug-ins/1.10.16/i18n/Portuguese-Brasil.json"
                },
                "columns": [
                    {"data": "reference", "width": "5%"},
                    {"data": "title"},
                    {"data": "client_short_name"},
                    {"data": "start_date", "width": "15%"},
                    {"data": "end_date", "width": "15%"},
                    {"data": "value", "width": "20%"},
                    {
                        "data": "id",
                        "width": "20%",
                        "searchable": false,
                        "orderable": false,
                        "render": function (data, type, row) {
                            let html;

                            html = "<a data-toggle='tooltip' data-placement='top' title='Atualizar Campanha' href='/v2#/trade-marketing/campanha/" + data + "'><i class=\"zmdi zmdi-edit zmdi-hc-fw mdc-text-purple-700 zmdi-hc-2x\"></i></a>";

                            html += "<a data-toggle='tooltip' data-placement='top' title='Enviar Campanha p/ Aprovação' @click='sendForApproval(" + data + ")' href='javascript:void(0);'><i class='zmdi zmdi-long-arrow-tab zmdi-hc-fw mdc-text-green-700 zmdi-hc-2x'></i></a>";


                            return html;
                        }
                    },
                ],
                drawCallback: function (settings) {
                    var $element = $('#data-table-pendents');
                    vm.$compile($element.get(0));
                },
            });


        },

    },
    mounted() {
        this.initDatatables();
    }


}

【问题讨论】:

  • 您尚未定义名为sendToApproval 的方法。你的意思是sendForApproval
  • 对不起,我写错了,名字是sendForApproval,定义是yes。
  • 您不能以这种方式混合使用 jQuery 和 Vue。你不能在 Vue 中嵌入 jQuery,然后在 jQuery 中嵌入 Vue。见stackoverflow.com/questions/43240789/…

标签: javascript jquery vue.js


【解决方案1】:
initDatatables() {
     **// New code added here
    // create new variable and assign this instance to it 
        let that = this;  //Now you can call any vue method via that variable.**

        this.dtPendents = $('#data-table-pendents').DataTable({
            "dom": '<frtp><"clearfix">',
            "ajax": '/v2/ajax/campaigns?status_id=5',
            "language": {
                "url": "//cdn.datatables.net/plug-ins/1.10.16/i18n/Portuguese-Brasil.json"
            },
            "columns": [
                {"data": "reference", "width": "5%"},
                {"data": "title"},
                {"data": "client_short_name"},
                {"data": "start_date", "width": "15%"},
                {"data": "end_date", "width": "15%"},
                {"data": "value", "width": "20%"},
                {
                    "data": "id",
                    "width": "20%",
                    "searchable": false,
                    "orderable": false,
                    "render": function (data, type, row) {
                        let html;

                        html = "<a data-toggle='tooltip' data-placement='top' title='Atualizar Campanha' href='/v2#/trade-marketing/campanha/" + data + "'><i class=\"zmdi zmdi-edit zmdi-hc-fw mdc-text-purple-700 zmdi-hc-2x\"></i></a>";

                        html += "<a data-toggle='tooltip' data-placement='top' title='Enviar Campanha p/ Aprovação' @click='sendForApproval(" + data + ")' href='javascript:void(0);'><i class='zmdi zmdi-long-arrow-tab zmdi-hc-fw mdc-text-green-700 zmdi-hc-2x'></i></a>";


                        return html;
                    }
                },
            ],
            drawCallback: function (settings) {
                var $element = $('#data-table-pendents');
                vm.$compile($element.get(0));
            },
        });


    },

【讨论】:

  • 您能否添加一些代码来解释此答案的工作原理?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 2019-04-19
  • 2021-06-18
  • 2021-05-20
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多