2017-02-10 4 views
-1

У меня есть элемент управления веб-пользователя, который включает этот скрипт в конце.Скрипт не загружается без обновления в 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 не загружается сперва, но отлично работает после обновления страницы вручную.

Любая помощь будет оценена по достоинству. Я очень новичок в требовании или языке сценариев.

+0

Вам необходимо предоставить больше информации, чем показано. Проблемы, устраняемые путем обновления, обычно возникают из-за плохой конфигурации RequireJS или неудачной последовательности запуска. Измените свой вопрос, чтобы показать свою конфигурацию RequireJS и показать свои элементы 'script' в том же порядке, что и в вашем 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» не загружается в разделе определения. Все еще выясняя причину. –