重载时,MeteorJS不运行外部script.js

MeteorJS not running external script.js on reload?

本文关键字:外部 script js 运行 MeteorJS 重载      更新时间:2023-09-26

我目前正在运行一个编译好的scripts.js文件,该文件使用onrender方法激活了一堆不同的UI功能(砌体,导航栏等)。

Template.mainLayout.onRendered( function() {
    $.getScript('js/scripts.js');
});

我的问题是,如果我导航到另一个页面,如/团队,脚本不重新运行,这意味着在其他页面,砖石不再工作。此外,当我回到主页时,脚本也中断了,使导航栏中断。

请让我知道,如果我使用这个功能错误?

如果您自己托管脚本,请将它们放在client/compatibility文件夹中。Meteor会自动将它们包含在你的应用程序中。

如果你想从CDN加载它们,编辑你的client/index.html文件夹添加一个script标签。

然后在你的onRendered回调,把代码初始化你的自定义脚本,例如this.$('table').datatable()或其他。

Eddie, .getscript()是一个异步函数,所以您需要指定一个回调函数。我需要在流星加载一个外部JS传单插件。使用async,定义回调函数完成了这个hack:

    $.getScript('js/l.control.geosearch.js', function( data, textStatus, jqxhr ) {
        $.getScript('js/l.geosearch.provider.google.js', function( data, textStatus, jqxhr ) {
            new L.Control.GeoSearch({
                provider: new L.GeoSearch.Provider.Google(),
                position: 'topcenter',
                showMarker: false,
                retainZoomLevel: true,
            }).addTo(map);
        })
    })