PlayScalaJS с загрузчиком не работает

Недавно я столкнулся с тем, что импорт начальной загрузки не был доступен в моем коде. А именно, предупреждение о плагине для jQuery не было доступно в моем коде (jQuery.fn.alert был неопределен). У меня в шапке было:

<script src="@routes.Assets.at("lib/jquery/jquery.min.js")" 
  type="text/javascript"></script>

<script src="@routes.Assets.at("lib/bootstrap/js/bootstrap.min.js")" 
  type="text/javascript"></script>

и в теле:

<body>
    @playscalajs.html.scripts("client")
</body>

В клиентском скрипте, когда он вызывается $("...").alert()Я получаю сообщение об ошибке: alert is not a function, хотя я подтвердил, что бутстрап определил это.

Как сделать так, чтобы bootstrap и playscalajs хорошо работали вместе?

1 ответ

Решение

Проблема возникла из @playscalajs.html.scripts("client") который разворачивается к этим:

<script src="/assets/client-jsdeps.js" type="text/javascript"></script>
<script src="/assets/client-fastopt.js" type="text/javascript"></script>
<script src="/assets/client-launcher.js" type="text/javascript"></script>

jQuery снова импортируется в client-jsdeps.js так как это зависимость от scala-js. Так как я не мог чередовать импорт начальной загрузки до client-launcher.js сценарий и после client-jsdeps.js Сценариями я отложил выполнение основного объекта, используя следующий код:

// New object calling the previous Main object
@JSExport
object MainDelayed extends js.JSApp { 
  @JSExport def main(): Unit = $(document).ready(Main.main _)
}

// The original object
object Main { 
  def main() = { ... }
}
Другие вопросы по тегам