1

最近、自分のコードでブートストラップのインポートにアクセスできないという事実に遭遇しました。つまり、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されますが、ブートストラップで定義されていることを確認しました。

ブートストラップとplayscalajsをうまく連携させるには?

4

1 に答える 1

3

問題は、@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>

jQueryclient-jsdeps.jsscala-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() = { ... }
}
于 2015-09-23T14:01:35.813 に答える