在javascript中替换变量

时间:2017-04-10 14:32:05

标签: javascript laravel vue.js

对这篇文章中的所有代码表示歉意,但我不知道如何描述它。

我有一些Javascript,它位于Vue组件中(该组件用于封装Datatable):

let table = $('#datatables-table').DataTable({ 

    "ajax": {
        "url": self.dataUrl,
        "type": "POST",

        "data": function(d){
            d.table = self.table;
        },

    },


"columns": self.tableColumns,
    order: [1, 'asc'],
    dom: "Bfrtip",
    responsive: false,//true wont let me hide columns
    "scrollY": "600px",
    "scrollCollapse": true,

    "paging": false,
    select: {
        style: 'single',
        selector: 'td:first-child',
        blurable: true

    },

    buttons: self.buttons,

});

我正在尝试传递按钮(self.buttons)配置,这就是我想要的样子:

[{extend:'remove', editor: editor},{extend:'create', editor: editor},{extend:'edit', editor: editor},],

在我的挂载方法中填充变量。通过AJAX:

axios.get(self.tableUrl)
            .then(function (response) {

                self.tableHeaders = response.data.tableHeaders;
                self.panelTitle = response.data.panelTitle;
                self.table = response.data.table;
                self.editorFields = response.data.editorFields;
                self.tableColumns = response.data.tableColumns;
                self.buttons = response.data.buttons;

这是PHP(Laravel),以形成响应:

$dt->buttons = array(
    array('extend' => 'remove', 'editor' => 'editor'),
    array('extend' => 'create', 'editor' => 'editor'),
    array('extend' => 'edit', 'editor' => 'editor')

);

然后我在JS中做了JSON.stringify,但问题是我最终得到了这个:

"[{"extend":"remove","editor":"editor"},{"extend":"create","editor":"editor"},{"extend":"edit","editor":"editor"}]"

那么,我怎样才能传递按钮,这样它们就不是一个字符串而编辑器不是"编辑器" (双引号)。

我想我需要以某种方式将其作为字符串传递,但删除引号。

米克

更新:编辑器定义如上:

 let editor = new $.fn.dataTable.Editor({
                 "ajax": {
                "url": self.dataUrl,
                "type": "POST",
                data: {table: self.table}
            },

    table: "#datatables-table",
    idSrc: self.table + '.id',
    fields: [self.editorFields]
        });

此处的完整代码:http://artisantinkerer.github.io/2016/12/15/Vue-Datatables.html

1 个答案:

答案 0 :(得分:1)

如果response.data.buttons确实是一个javascript数组,那么你可以用这种方式替换editor属性的值。

response.data.buttons.map(b => ({extend: b.extend, editor: editor}))

或者只是不从服务器渲染editor属性并映射并将其添加到客户端。