Datatables Ajax无法呈现Vue组件

Datatables Ajax无法呈现Vue组件,ajax,laravel,datatables,vuejs2,Ajax,Laravel,Datatables,Vuejs2,我正在尝试在Ajax模式下连接Datatable和Vue组件,如果成功的话,它应该呈现产品的Order按钮。我为我的web应用程序创建了一个API,并通过get查询将JSON传递给AJAX表属性。所有数据都正确显示,甚至一个按钮都是命令,但它不是Vue组件,而是一个简单的HTML。 所以我把这个字符串传递给JSON 但结果是,该行被写入表单元格,而不是转换为vue组件 如果我在正常的datatable模式下(没有Ajax)通过这一行,那么呈现组件就没有问题了 我使用Laravel 5.5是因为

我正在尝试在Ajax模式下连接Datatable和Vue组件,如果成功的话,它应该呈现产品的Order按钮。我为我的web应用程序创建了一个API,并通过get查询将JSON传递给AJAX表属性。所有数据都正确显示,甚至一个按钮都是命令,但它不是Vue组件,而是一个简单的HTML。 所以我把这个字符串传递给JSON

但结果是,该行被写入表单元格,而不是转换为vue组件

如果我在正常的datatable模式下(没有Ajax)通过这一行,那么呈现组件就没有问题了


我使用Laravel 5.5

是因为在Vue中包装/使用jQuery组件很容易,用户通常会错误地认为jQuery组件与Vue兼容

需要了解的最重要的一点是Vue组件的生命周期(创建、安装等)。您可能能够在jQuery数据表中呈现Vue按钮,但这是因为您很幸运能够提前获得数据;i、 e.在Vue完全呈现Vue包装器组件之前,您就拥有了这些数据

这就解释了为什么ajax不起作用。该组件已被渲染。即使jQuery组件重新呈现,它也不会呈现Vue组件。您还将遇到其他问题,如Vue事件在随后的重新加载/刷新中没有正确连接,组件行为不正确(可见、隐藏、v-if),因为Vue是被动的,而jQuery插件/组件通常不是

因此,为了包装jQuery组件,您有两个选项:

  • 每次收到ajax数据并在Vue创建事件中呈现jQuery组件时,都必须销毁并重新创建Vue组件。这有助于包装器组件重新呈现、连接事件等部分解决方案,请参见Tony的回答:

  • 接受jQuery组件不是被动的这一事实,并在顶部创建一个转换层,以便从Vue与jQuery组件通信。示例(无耻插件)jQuery DataTable组件的我的包装器:


  • 显示到目前为止您所拥有的内容,人们会更容易提供帮助例如:Vue组件的标准html:Order我将此html放入JSON文件,然后传递到AJAX和DataTable,将其呈现为文本,而不是此处所述的内容