2012-09-19 9 views
16

私はRequireJSとAngularを使用していますが、私のセットアップでは連携していません。 jQueryのバージョンが1.7.2の場合は問題ありません。しかし、私はjQuery 1.8.1とjQuery UIを使いたいと思っていました。角度アプリでもこれで私のメインモジュールを初期化できませんでした。ここでjQueryとAngularJSが連携していません

は問題です:

大文字と小文字を区別する変数:jQueryとjQueryの。 jquery 1.8.1のソースコードでは、最後にwindow.jQueryを定義しています。以前のバージョン1.7.2ではwindow.jqueryが定義されていました。

jquery-UI-1.8.23.custom.min.jsファイルが含まれていますので、私のアプリケーションでjQuery UIを使いたいと思っています。それを含めた後、私は "jQuery"が定義されていないというエラーを受け取りました。

私はjQueryバージョンをアップグレードし、1.8.1バージョンをダウンロードしました。 jQueryのソースコードの終わりに向かって、このバージョンではwindow.jQuery(jQuery UIで必要に応じて正しい場合)が定義されていることがわかりました。

私のrequire-jquery JSをJames Burke githubプロジェクトの最新バージョンで更新し、jquery 1.8.1で更新しました。

しかし、更新されたjQuery/RequireJSプロジェクトを含めて、angularjsは動作を停止しました。

私はクロームコンソールでこのエラーを取得:

Console Output

私は1.7.2角度作品に戻す場合。または、jQueryファイルを編集してwindow.jQueryの代わりにwindow.jQueryを定義すると(ケースに注意してください)、再び動作します。しかし、これはjQueryのUIがそうでないことを意味します。

+1

jQueryを含めて試したことがありますか? "window.jquery = jQuery;"次に、jqueryとjQueryの両方が定義され(同じものにエイリアスされます)、両方のパッケージが満足できるはずです。 –

+0

はい、私はそれを試しました。どちらのバージョンでもAngularJSはモジュール名 'manager'が見つからないと不平を言う。私の問題は、AngularJSよりもRequireJSともっと関係していると思います。私のプロジェクトではRequireJSを使用していましたので、そこから誰かがRequireJSプロジェクトにjQuery UIとAngularを組み込もうとしたかどうかを知りたいと思っています。 –

答えて

3

$とjQueryをグローバル変数にしたjQueryソースから行を削除してこの解決策を修正しました。この行はwindow.jQuery = window.$ = jQueryのようになります。

RequireJSでAngularJSを使用していて、同様の問題が発生している場合は、これらの行を削除してください。

さらに、プロジェクトでjqueryui-amdを使用する必要があります。 Githubページからユーティリティをダウンロードすると、jQuery UIスクリプトがAMDモジュールに変換されます。

HTML要素を拡張するために '指示文'と呼ばれるAngularJS機能を使用することで、jQuery UIコンポーネントを再利用可能かつ正常に使用することができました。

私はプロジェクトで作業中にAngularJSを憎んだり、愛したりしたことがありますが、時にはTwitterのみんなにAngularJSが嫌いだと知らせることさえできます。しかし、先月2つのプロジェクトを実装して終了した後は、いつ使用するのか、使用しないのかについてはかなり良いアイデアがあります。

http://jsfiddle.net/samunplugged/gMyfE/2/

+3

私はこれが受け入れられる答えではないと思います。 jQueryのソースを編集する必要はありません。それは良い習慣ではない。 1つは、最終的にjqueryをアップグレードする必要があるときに、不要なメンテナンスオーバーヘッドが発生します。 –

16

jQueryのnoConflictメソッドを使用してこの問題に、よりエレガントかつ将来性のソリューションです:

は、ここで私はAngularJSでのjQuery UIの使用を示すために作成した1 jsFiddleです。

インクルードしようと私の二日間試した後

<script> 
$.noConflict(); 
jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
}); 
// Code that uses other library's $ can follow here. 
</script> 
+4

これは、ユーザーがリンクを訪れて必要な情報を見つけ出す代わりに、ドキュメントのコード例を直接解答に入れたほうがよいでしょう。 – Jimbo

1

はこれを簡単に固定。..

http://api.jquery.com/jQuery.noConflict/

UPDATE(リンクの例)に

ビュー豊富なドキュメント特定のSlider Jqueryファイルをview.htmlに直接コピーします。 index.htmlファイルからjqueryを削除してください

関連する問題