Ember.js在特定页面上包含外部脚本

时间:2015-02-09 14:26:24

标签: javascript ember.js

我正在尝试弄清楚如何包含外部JavaScript源(图表),但仅限于网站上的单个页面。可以在视图或模板中完成吗?

我发现只是将<script src="exhibit.js"></script>添加到页面模板不起作用。如果我将它添加到整个网站的模板中,它会加载得很好,但是它会加载到每个页面上。

我的问题的另一面可能更具体。有没有办法在每次加载页面时获取脚本?示例:当我第一次访问包含展示脚本的页面时,它会加载包含展览的ember应用程序并正确显示页面。我离开了页面,当我返回到页面时,展览脚本没有被重新加载,因此没有像第一次访问那样正确地重新绘制页面。

1 个答案:

答案 0 :(得分:16)

如果您使用Ember CLI构建应用程序并且exhibit.js是一个相当小的文件,那么最好在exhibit.js文件中包含vendor.js以最小化HTTP请求。

但是,如果您想在单个路线中加载exhibit.js,您可以使用this answer中描述的polyfill方法,如下所示:

// app/controllers/some-route-name.js    

import Ember from 'ember';

export default Ember.Controller.extend({

  loadPlugin: function() {
    // Use run loop if you need to setup the DOM first
    Ember.run.scheduleOnce('afterRender', this, function() {
      Ember.$.getScript('path/to/exhibit.js');
    });
  }.on('init')

});

这将异步加载文件。 getScript docs are here - 你会发现你也可以使用回调。

如果在加载前不需要DOM设置,则可以删除运行循环。在控制器的init事件上加载此脚本将阻止每次用户导航到路由时重新加载。如果您执行想要每次都加载脚本,您可以将getScript移至视图的didInsertElement事件。

相关问题