2017-02-10 93 views
-1

我有一個web用戶控件,它包含了這個腳本。腳本沒有在require.js中刷新沒有刷新

<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或腳本語言很陌生。

+0

您需要提供比您所展示的更多信息。通過刷新解決的問題通常是由於RequireJS配置錯誤或啓動順序不好造成的。請編輯您的問題以顯示您的RequireJS配置,並以與HTML中相同的順序顯示您的腳本元素。讀者應該能夠清楚地看到你如何啓動你的模塊加載。最終,你應該瞄準[mcve]。 – Louis

+0

您仍然未顯示您使用的'script'元素。 (您只顯示*一個*,這還不夠)。它們對於啓動您的應用程序至關重要。如果您沒有正確設置它們,可能會導致您報告的問題。 – Louis

+0

hi @Louis我添加了更多腳本,這些腳本包含在用戶控件呈現的母版頁中。 –

回答

-1

嘗試寫:

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

應該等待加載相關JS(見這個問題的答案:Script working only on page reload)。 我希望這有助於!

+0

謝謝,但這是行不通的,我認爲「validate.add」依賴不在定義部分加載。仍然找出原因。 –