2016-05-23 2 views
0

角度コードを含めるための方法を使用していないプロジェクトは、私たちのHTMLページに直接ロードします私のマネージャーからしばらくの間、任意のツールを含む許可)。私は今ディレクティブを書いていますjsライブラリファイルをディレクティブに含める適切な方法、変更可能な相対パスを避ける

<script type="text/javascript" src="../lib/angular/angular-file.js"/> 

:私が提供するJavaScript /角度/ブートストラップ要素を使用したい場合は

は現在、私は単に、私のindex.htmlの中のようなものを、それが含まれるであろう。 HTMLテンプレートでは、すでに書かれたサードパーティの角度指示文を使用してツリービューを提供したいと思います。私はこのスクリプトを私のディレクティブのhtmlテンプレートの中に入れてロードされたかどうかを確認し、index.htmlをすでに信頼しています。

しかし、私は相対パスを使用したくない、または少なくともそうすることを恐れているので、私の指示が後で中断する原因になります。私のディレクティブのhtmlテンプレートは、 "portal/modules/simulation/templates/anything"のようなツリー構造の下に埋め込まれています。 "../../../../ ../ ../lib "はテンプレートには醜いですが、角度のあるファイルを移動させる可能性があり、私のディレクティブを壊すことはできません。

ファイル構造のマルチプルレイヤー、ファイル構造の「最上位レイヤー」に関連して動作する何らかの方法を前提にせずに、ライブラリーをインクルードするクリーナーの方法はありますか?

私のディレクティブには、自身の libディレクティブが含まれていて、共有されているlibディレクトリの一部ではありません。私が使用しているサードパーティのツリービューディレクティブは、他の角度とjqueryコードに依存していると思いますので、誤ってトップレベルのindex.htmlファイルに何か依存しているかも知れません。/jqueryコード私の指示はそれを実現することなく使用します。私の指示を私がしてはいけない時に一人にすることを心配していますか?

答えて

2

一般的に、私はgruntとgrunt-angular-templatesを使用してテンプレートをパックします。このようなものを使用する場合は、テンプレートをmyModule/fileNameOfTemplateと参照することができます。テンプレートは既にメモリに保存されています($templateCacheを使用)ので、余分なリクエストは行われず、コードは実際のファイル。あなたはモジュールの格納場所の余分なモジュールを追加することなく、

、手順などを構築...

foo.jsは

var fooModule = angular.module('foo', []); 
fooModule.run(['$templateCache', function ($templateCache) { 
    $templateCache.put("foo/mytemplate.hmtl", "Really" + 
        "really" + 
        "long" + 
        "string"); 
}]) 
fooModule.directive('bar', function() { 
    return { 
     templateUrl: 'foo/mytemplate.html' 
    } 
}); 

今では重要ではありません - あなただけのファイルを引き出していますテンプレートキャッシュの

また、templateUrlは関数を受け入れることができます。モジュールや何かのパスを決定する関数を書くことができますが、それは非常に脆弱になります。

+0

私は、不満が問題を解決することに完全に同意します。残念なことに私は不快感を使用することはできません。私のマネージャーはそれを「リファクタリング」に設定することを検討し、時間がないと言います。私は...同意しないが、それは私の決断ではない。 – dsollen

+0

これはちょうどテンプレートをすっきりと整頓します。私はコア・ツー・アイデアで編集します。 – Stephen

+0

@dsollenこれはサーバー側で行う必要があります。 'portal/modules/simulation/templates/whatever'パスを持つ変数があることを考慮して、ビルド時(Grunt)または実行時(PHP、ビューテンプレート、ビューテンプレートなど)でインデックスファイルに適用する必要があります。サーバー側のセットアップの詳細を指定していないので、その答えは最善のオプションです。 – estus

関連する問題