[解決済み] Angular ディレクティブのテンプレート URL を .js ファイルに相対的に指定する。
2023-06-07 11:59:36
質問
いくつかの異なる場所で使用されるangularディレクティブを構築しています。
ディレクティブが使用されるアプリのファイル構造を常に保証することはできませんが、ユーザーに強制的に
directive.js
と
directive.html
(実際のファイル名ではありません)を同じフォルダに保存します。
を評価するとき、ページが
directive.js
を評価するとき、それは
templateUrl
は自分に対する相対的なものであると考えます。を設定することは可能でしょうか?
templateUrl
に対して相対的であるように
directive.js
ファイルへの相対パスを指定しますか?
それとも、ディレクティブ自体にテンプレートを含めることだけが推奨されるのでしょうか。
私は、異なる状況に基づいて異なるテンプレートをロードしたいと思うかもしれないと思います。
directive.js
どのように解決するのですか?
現在実行中のスクリプトファイルは、常にscripts配列の最後の1つになるため、そのパスを簡単に見つけることができます。
// directive.js
var scripts = document.getElementsByTagName("script")
var currentScriptPath = scripts[scripts.length-1].src;
angular.module('app', [])
.directive('test', function () {
return {
templateUrl: currentScriptPath.replace('directive.js', 'directive.html')
};
});
スクリプト名がわからない場合(複数のスクリプトを一つにまとめている場合など)、これを使います。
return {
templateUrl: currentScriptPath.substring(0, currentScriptPath.lastIndexOf('/') + 1)
+ 'directive.html'
};
備考 : クロージャを使う場合、currentScriptが正しいタイミングで評価されるように、コードの外側で以下のような工夫をする必要があります。
// directive.js
(function(currentScriptPath){
angular.module('app', [])
.directive('test', function () {
return {
templateUrl: currentScriptPath.replace('directive.js', 'directive.html')
};
});
})(
(function () {
var scripts = document.getElementsByTagName("script");
var currentScriptPath = scripts[scripts.length - 1].src;
return currentScriptPath;
})()
);
関連
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] angular-routeとangular-ui-routerの違いは何ですか?
-
[解決済み] Pythonでファイルの絶対パスを取得する方法
-
[解決済み】AngularJSのディレクティブスコープにおける「@」と「=」の違いは何ですか?
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] ECMAScriptとは?
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] JavaScriptのArray.sort()メソッドでシャッフルするのは正しいのか?
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] Promise : then vs then + catch [重複].
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] Node.jsのES6クラスをrequireで作る
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] jQueryのバージョン1、バージョン2、バージョン3の違いは何ですか?[クローズド]
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行