Ionic 2 使用第三方 js 库

Ionic 2 using third party js libs

我正在尝试在 ionic 2 项目中使用 DrumJs 并且此库需要 运行 $("select").drum() 当文档准备就绪时但即使我在 $(document).ready(function().....) 它在文档之前 运行s 有什么想法可以在哪里添加这个以便 运行 正确吗?

p.s。我无法将它导入到我的 .ts 文件中,所以我使用 gulp 连接我通过 index.html

导入的一些 js 文件

尝试使用生命周期事件之一 运行 您的代码,即:

ionViewLoaded() {
    $("select").drum();
}

这是文档:

http://ionicframework.com/docs/v2/api/components/nav/NavController/#lifecycle-events

问题是我只能在 html 中导入它,否则我必须制作一个 d.ts 文件以在代码(打字稿文件)中导入,并且它们加载异步所以有我可以用 setTimeout() 来克服竞争条件,但我真的不喜欢这个解决方案,所以我决定放弃尝试并尝试制作我自己的新插件。

简而言之,您必须检查 DrumJs 是否有定义文件以将库与 Typescript 一起使用,安装该定义包(文件结尾为 .d.ts) ,然后将该库导入您的脚本。

循序渐进

  1. 为此,您必须安装 typings,它类似于这些定义的 npm。要安装它,请执行 npm install -g typings

  2. 安装后,通过在终端上执行 typings search drumjs 检查 DrumJS 是否有定义。尝试 drumjs、drum、drum.js,也许其中之一与您想要的库相匹配。

  3. 如果该库存在,请通过 运行 在您的本地文件夹中安装它 typings install drumjs --save。如果您有任何问题,请尝试 typings install drumjs --save --global,如果您遇到任何进一步的错误,请阅读 typings 的文档.

  4. 安装定义后,您可以从 npm 安装脚本,运行 npm i --save drumjs (我想这是包的名称)

  5. 最后,安装包及其定义后,将其导入到文件顶部的 .ts 脚本中,例如:import * as drum from 'drumjs';

  6. 使用 drumJS :D

更进一步

如果你需要Jquery来初始化drumJS,那么按照我告诉你的方式导入它,并在你的.ts脚本中写一个方法ngOnInit() .

然后,在里面写上$("select").drum()。像这样思考:

class YourClass{
  ...

  ngOnInit(){ $("select").drum() }      

  ...
}

另外,检查一下Angular2的生命周期方法,有ngOnInit,但也有其他的可能更适合这种情况。