在require.js中没有刷新的情况下加载脚本

时间:2017-02-10 13:31:05

标签: c# jquery node.js requirejs sitecore

我有一个Web用户控件,最后包含了这个脚本。

 <script>
     require(['modules/product'], function (_s) {
        new _s();
   });
 </script>

加载product.js文件,product.js定义如下

define(["jquery", "async!https://maps.googleapis.com/maps/api/js?key=something", "validate", "validate.add"],function ($) {--some code---}

我有一个母版页或包含这些脚本的基页

<%if (Sitecore.Context.PageMode.IsNormal ){ %>
<script type="text/javascript" src="/js/vendor/modernizr.js"></script>
<script type="text/javascript" src="/js/vendor/require.js"></script>
<script type="text/javascript" src="/js/main.js"></script>
<%} else { %>
<script>
    function require() { };
    function define() { };
</script>

RequireJS配置就像这样

require.config({
baseUrl: "/js",
waitSeconds: 0,
paths: {
    async: 'vendor/async',
    jquery: 'vendor/jquery-1.11.3.min',
    'jquery.ui': 'vendor/jquery-ui',
    dropdown: 'vendor/dropdown',
    sharebutton: 'vendor/buttons',
    tooltip: 'vendor/tooltip',
    easyzoom: 'vendor/easyzoom',
    validate: 'vendor/jquery.validate.min',
    'validate.add': 'vendor/additional-methods',
    swipe: 'vendor/jquery.touchSwipe',
    browser: 'modules/browser',
    moment: 'vendor/moment'
}

});

但是这个product.js文件最初没有加载,但是在手动刷新页面后工作正常。

任何帮助将不胜感激。我是requirejs或脚本语言的新手。

1 个答案:

答案 0 :(得分:-1)

尝试写:

<script>
    $(window).load(function() {
        require(['modules/product'], function (_s) {
            new _s();
       });
    }
</script>

它应该等待加载相关的js(参见这个问题的答案:Script working only on page reload)。 我希望这有帮助!