2017-10-10 10 views
0

AngularJSでは、外部テンプレートをスクリプトタグまたはWebサーバー上のhtmlファイルとして提供できます。しかし、私はそれらのテンプレートを取得するカスタムロジックを実装する必要があり、どのメソッドも適合しません。だから私はAngularJSのセクションを書き直すことができたと思った。テンプレートが実際にサーバからロードされた場所。しかし、これについての情報を見つけるのはかなり難しいことが判明しました。私は$TemplateRequestProviderがこの作業に使われていることを知りましたが、私はそれをカスタムロジックと置き換える方法を知りませんでした。あなたは私を助けることができます?AngularJSテンプレートをロードする独自の方法を実装する

答えて

1

実際に$ templateRequestProvider として実現しようとしていることを完全にはわかっていません。は、指定されたURLのテンプレートを取得していますか?ボンネットの下で、リモートソースにあるテンプレートが必要な場合、プロバイダは最初に内部キャッシュを実行し、要求されたテンプレートが利用できない場合は取得します。応答が成功すると、応答本体(HTMLコンテンツ)が内部ストア/キャッシュに格納され、索引付けされます。リソースサーバーがヘッダー/クッキー、必須の要求パラメーター、authなどの追加のデータセットを要求内に存在させることを必要とする場合はほとんどありません。これらのテンプレートを取得するためのあなたの要求は、より洗練されたものでなければなりません。あなたが本当に関心を持っているのは、送信される直前にリクエストを操作できることだと思います。ではなく、は既にangleの開発者が作成した(フェッチ+キャッシング)ロジックを書き直しています。

実際にが必要で、依頼を処理するための独自の仕組みを持っている場合は、アングルアプリのライフサイクルの設定段階でそのプロバイダにアクセスできます。そのためには、アプリケーションのモジュールにこのようチェーン設定を使用します。今すぐ

app.config(['$templateRequestProvider', function ($templateRequestProvider) { 
    $templateRequestProvider.$get = ['$templateCache', '$http', '$q','$sce', ƒunction ($templateCache, $http, $q, $sce) { 
     var getRemoteTemplateByUrlFn = function (tplUrl, ignoreRequestError) { 
      // here be dragons 
      return $http.get ... ; 
     }; 

     return getRemoteTemplateByUrlFn; 
    }]; 
}]). ... 

を、その段階に入る前に、私はあなたがより良いが、露光から離れて$ templateRequestProviderとしてドキュメントに勉強していてお勧めします$設定オブジェクトをプロバイダの関数に取得すると、httpOptions(...)関数も公開されます。この関数は、リモートテンプレートを取得するリクエストにインクルードするヘッダなどを含むhttpOptionsオブジェクトを渡して呼び出すことができます。

また、テンプレートキャッシングとオンデマンドフェッチについては、ocLazyLoadライブラリを紹介します(あなたがまだ出くわしていない場合)。私は、必要に応じてページソースを遅くロードするために)のみを使用しています(たとえば、ボタンをクリックしたときのモーダルウィンドウテンプレートとコントローラ)。その優れた機能の中で:

    依存関係を自動的に
  • デバッガ優しい(無evalのコード)をロードされている
  • サービスやディレクティブを経由してオンデマンドで
  • 負荷を通常の起動や負荷を混在させる能力
  • 組み込みの非同期ローダーを使用するか、独自の(requireJS、...)を使用します。
  • js(角度の有無)/ css/templatesファイルをロードします。

楽しくお楽しみください!

関連する問題