0

ここからサンプルプロジェクトを使用しています。

サービスのクライアントにJavaScriptAPIを提供するために、モジュールから関数をエクスポートする必要があるとします。

しかし、私の.jsファイルの宣言はRequireJSの外には表示されません!

次のブロックをjquery-require-sample/webapp/app.htmlに追加します。

<script type="text/javascript">
   $(document).ready(function() {
      $('body').alpha().beta();
   });
</script>

失敗します:Uncaught TypeError:Object[objectObject]にはメソッド'alpha'がありません

私がやりたいことをすることは可能ですか?

4

1 に答える 1

2

あなたが提供したコードに基づいて、app.html の既存のスクリプト タグの後にコードを追加したと仮定します。あなたが見ているのはタイミングの問題だと思います。ページを読み込んだ後、<head>タグを確認すると、スクリプト タグが次の順序で表示されます。

  1. 「require」スクリプト
  2. あなたの新しいスクリプト
  3. アルファ
  4. ベータ

そのため、アルファ版とベータ版が実行される前にスクリプトが実行されます。その理由は、require は最初のスクリプトを処理しますが、すべての依存関係 (アルファ版とベータ版) が実行されるまで main.js の「肉」を実行しないためです。

これが役立つことを願っています。コードに対する次の変更も、何が起こっているかを示している場合があります。setTimeout は、アルファとベータにロードする機会を与えます。

<script type="text/javascript">
  setTimeout(function(){
           $(document).ready(function() {
              $('body').alpha().beta();
           });
           }, 5000);
</script>
于 2011-12-06T01:14:19.193 に答える