2017-07-27 5 views
0

最近、Angular 4をいくつかのプロジェクトで取り上げたいと考えています(私はまだ多くの基本を学んでいるので、私の質問ははっきりと分かるかもしれません)。過去に私はDOM操作のほとんどのためにjQueryを使用していましたが、Angularを使用すると、Angularアプリケーション内でjQueryを使用すると非常に面倒な変更があります。jQueryとAngular4を混在させる方法が異なります

Angularプロジェクト内でjQueryを使用することに関する多くのStack Overflow投稿を読んだことがありますが、それらはすべてコンポーネントのtypescriptファイルからjQuery関数を書くことをお勧めします。 Angularはコンポーネントに基づいているため、これは意味があります。私の唯一の質問/懸念事項は、コンポーネント自体の外部でグローバルレベルのjQuery関数を作成する方法です。

たとえば、以前はjQuery関数を保持し、それらをhtmlファイル内で参照するjsファイルを作成しました。この例は、画像の視差関数です。別の視差画像に少し異なるスタイルを追加したいのであれば、私はこれをうまくやってjQueryを仕事に使うことができますが、今は例として、同じjQueryコードを使用する2つの異なる視差コンポーネントがあります。 )方法は、jQueryコードを保持するグローバルなjsファイルを介して、異なるコンポーネント内から同じ関数を参照する方法ですか?

私は、関数を保持するファイル "xxxx.js"を作成し、それをindex.htmlファイルで参照させることができます。私は、私が記述したようなものが可能かどうか、そしてもしそうなら、最良のアプローチは何かを知りたいだけです。私は多分、依存性注入を使用することになり

答えて

0

、 アプローチは次のようになります。

  1. は、関数全体のすべての共通の機能 を保持しているservicesファイルを作成します。
  2. ターゲットコンポーネントでプロバイダとして使用します。
  3. Dependancy injectionを使用すると、そのようなサービスのオブジェクトが作成され、自分のコンポーネントで使用されます。

は限り は、はい、それは可能である、とのアプローチとして「は、JSを作成し、index.htmlの中に含まれ、コンポーネント渡って使用します」。 私はそれをjsファイルである私のプロジェクトの外部ライブラリの1つに使用しました。手順は次のようになります。

  1. コピーのsrc /資産/ JavaScriptでのjsファイル
  2. のindex.htmlに

    <script src="assets/javascript/yourFile.js"></script> 
    
  3. それらを追加コンポーネント前に、コンポーネントのセクション(に示すように、あなたのjs関数を宣言しますディレクティブ):

    declare var yourFunction: any; 
    
  4. これで、ターゲットコンポーネントでこの機能を使用できます。
+0

ああ、問題の半分を解決します。しかし今、例として、ウィンドウのサイズ変更などの特定のイベントで発生する関数があるとします。彼らのイベントのインラインで単に発砲するので私の機能のほとんどは名前をつけられません。 $(window).on( "resize"、function(){....})のようなものです。あなたが提供したアプローチはまだこのようなもので動作しますか?コンポーネントの中で宣言する特定の機能がないため、ウィンドウのサイズ変更での起動はありません。私のParallaxの例では、ウィンドウスクロールで起動します。 –

+0

私はそれについてはよく分かりませんが、それを試してみて、それがうまくいくかどうか確認してください。何も宣言しないでください。ステップ1と2を行い、イベントがあなたの関数をトリガするかどうかを見てください。 名前付き関数を使うことを提案していますが、これはコードを読みやすく保守しやすくし、typescriptの原則に合っています –

+0

これは何を悪くしようとしているのでしょうか... jQueryのjsファイルをHTMLファイルAngularが構築しているのは、それ自体のファイルのjQueryがあたかも標準のHTMLファイルであるかのように動作すると私は推測します。 –

0

フレームワークを角度として使用すると、要素とそのイベントを操作し始めます。ページの終わりにスクリプトを1回だけ入力すると、イベントは現在の要素に適用されますが、角度を変更するとイベントは機能しなくなるため、Jqueryは慣れているので機能しません。

Jqueryは角度付きではお勧めできませんが、特定の傾斜したプラグインではまだ見つかっていない機能を利用するには、そのバインディングを作成する角度コンポーネントを作成することができますあなたが望む要素に適用することによってjquery呼び出しを行う必要があります。また、イベントのいくつかのタイプに対してアンバインドを実行することも、理想的です。

例:Example