如何在Angular中重新执行外部脚本?

时间:2017-05-19 15:26:25

标签: javascript jquery angular typescript

我有一个外部js文件,其中包含一堆用于用户界面的jQuery方法。但是,Angular路由器是异步的,因此脚本无法正确呈现其他页面上的用户界面元素,因为它们尚不存在于DOM中。

以前,我很喜欢从脚本中选择一些方法并将它们添加到名为rerender的方法中,但这会变得混乱。

我的问题是看看是否有办法在rerender方法内再次加载和执行整个脚本?

1 个答案:

答案 0 :(得分:1)

您可以导入外部脚本。在构造函数中执行:

constructor() {
    System.import('script-loader!bower_components/fullcalendar/dist/fullcalendar.min.js').then(()=>{
      this.render(); // Do whatever, for demonstration I call a render() method
    })
}

请确保custom-typings已宣布System

declare let System: SystemJS;

interface SystemJS {
  import: (path?: string) => Promise<any>;
}

interface GlobalEnvironment {
  SystemJS: SystemJS;
  System: SystemJS;
}

选项2:

或者,您可以在导入语句后将其放入模块中:

require('bootstrap/js/tooltip.js'); // For example