Javascript MeteorJS在重新加载时未运行外部脚本.js?

Javascript MeteorJS在重新加载时未运行外部脚本.js?,javascript,jquery,meteor,Javascript,Jquery,Meteor,我目前正在运行一个编译后的scripts.js文件,该文件使用onRendered方法激活了一系列不同的UI功能(砌体、导航栏等) Template.mainLayout.onRendered( function() { $.getScript('js/scripts.js'); }); 我的问题是,如果我导航到另一个页面,如/team,脚本不会重新运行,这意味着在其他页面中,砖石结构不再工作。此外,当我回到主页时,脚本也会中断,使导航栏中断 如果我使用此功能有误,请告诉我?如果您自己

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

Template.mainLayout.onRendered( function() {
    $.getScript('js/scripts.js');
});
我的问题是,如果我导航到另一个页面,如/team,脚本不会重新运行,这意味着在其他页面中,砖石结构不再工作。此外,当我回到主页时,脚本也会中断,使导航栏中断


如果我使用此功能有误,请告诉我?

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

如果要从CDN加载它们,请编辑
client/index.html
文件夹以添加
script
标记

然后在您的
onRendered
回调中,放入初始化自定义脚本的代码,例如
this.$('table').datatable()
或其他任何东西。

Eddie,.getscript()是一个异步函数,因此您需要指定一个回调函数。我需要在meteor中加载一个用于传单插件的外部JS。使用异步定义回调函数进行了攻击:

    $.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);
        })
    })

您是否使用iron router中的
main布局
?不,我使用的是flow router和blaze布局。我现在使用相同的函数将脚本直接加载到scripts.js文件中。现在开始更接近的解决方案。通过client/compatibility加载它们,现在我在代码中定义了没有被重新加载的范围。但是onRendered只初始化我的脚本,如何在每次重新加载时重新初始化该脚本(到新路由)?如果
onRendered
没有重新运行,那是因为即使模板消失并返回(即,您更改路由并返回),也没有重新加载模板。要强制它重新加载,它需要包含一个变化的变量;例如,返回
Date.now()
或类似内容的帮助器。如果这让人觉得不舒服,那是因为如果你认为你的模板需要重新命名,而Meteor认为它不需要,那么一些更大的东西可能是错误的。我建议您在新问题中发布您的特定情况/代码(包括您可能尝试初始化的jQuery插件或类似插件)这只是一个学习项目,所以hacky很好。然而,即使我设置了一个变化的变量,它似乎仍然不会强制重新启动。