すべてのページにロードするウェブサイトのフッターセクションに対して、AngularJSのディレクティブを作成しました。内部では、ページがロードされた後に実行する必要のあるjQueryコードをいくつか追加しました。これは、そのことを考えるための唯一の解決策でした。ここではそれがどのように見えるかの例を示します。AngularJSディレクティブのファイルからJavaScriptコードを実行しています
app.directive('footer', function() {
return {
restrict: 'A',
replace: true,
scope: {user: '='},
templateUrl: "PATH_TO_HTML_FILE",
controller: ['$scope', '$filter', function ($scope, $filter) {
// Some random jQuery goes here, for example:
$('.search-nav > a').on('click', function(){
$('.search-drop-down').slideDown();
});
// Close Search form
function closeSearchField() {
$('.search-drop-down').slideUp();
}
}]
};
});
私はそれを行うための最善の方法だかはわからないが、私は今、やりたいことは、別のファイルにコントローラで、このjQueryのコードを取得することです。その理由:私たちが扱っているフロントエンドの人は、AngularJSがディレクティブなどについて言及していないことを知らないので、ページロード時に実行されるすべてのjQueryコードで別々のファイルを作成したい場合、必要です。ディレクティブ自体が読み込まれると、私はちょうどファイルのcontectを取得し、上のコントローラの本体で実行したいと思います。どのようにそれを行う上の任意のアイデアですか?あるいは、全体の問題に対するより良い解決策ですか?
あなたのウェブサイトは[SPA](https://en.wikipedia.org/wiki/Single-page_application)ですか?それはすべてのビューの変更にリロードかどうか)?そうであれば - すべてのビューの変更時にこの* jquery code *を実行するか、または1回だけ実行しますか? SPAでない場合は、ヘッダーにこのスクリプトを含めてください。 – fracz
この場合、SPAのウェブサイトです。すべての変更に対して実行したいコードの一部ですが、一部は変更しません。実際には、私がディレクティブをビューに持っているかどうかによって異なります。ディレクティブ固有のコードを個別のスペースに配置する方法を探しています。 html、js、およびcss。 – mmvsbg