Aurelia 出现 jquery 数据表使用错误

Aurelia with jquery datatables usage error

我在与 Aurelia 一起使用 jquery 数据表时遇到问题。 我正在尝试导入数据表,但没有成功。当我尝试初始化它时,它给我错误

Unhandled promise rejection TypeError: $(...).dataTable is not a function(…)

我的打字稿代码如下:

import * as $ from 'jquery';
import * as dataTable from 'datatables';
export class App {
router: Router;

constructor() {}
attached() {
    $('#example').dataTable({
        "paginate": true,
        "pageLength": 25
    });
} 
 activate() {  
    console.log("app.activate");
}.... 

有什么指点吗? 干杯:)

这里有几个问题会让您头疼。

首先,jQuery导出一个默认变量$。因此,您可以执行以下操作以在 ViewModel 中导入 jQuery:

import 'jquery';

其次,DataTables 插件扩展了 jQuery 的库原型,将其自身添加到 jQuery 对象中。因此,要使其正常工作,您需要先包含 jQuery,然后再包含 DataTables 插件。

我看不到客户端使用的默认导出,所以这应该为您提供以下功能代码:

import 'jquery';
import 'datatables';

除非我忽略了一个特定的细节,否则我相信这应该可以解决问题。如果没有,请在下面发表评论,我们将以任何一种方式对其进行排序。

[已解决] 我通过在 activate() 方法中初始化数据表并将导入保持原样来使其工作...

activate() {  
   datatable();
   console.log("app.activate");
}.... 

进一步尝试,发现这也有效...

import * as $ from 'jquery';
import "datatables";
//import * as dataTable from "datatable";

export class DatatablesExample {    
   //activate() {
   //    dataTable();
   //}
    attached() {
        $('#example').dataTable();
    }
}

一直以来我的问题是导入 jQuery。 但我想知道为什么推荐的导入不适用于 jquery...

import $ from 'jquery';