16

ファイルを含むだけのAngularJSアプリを実行しています

<div ng-include src="'sample.html'"></div>

これは、Web サーバーで実行すると機能します。ただし、ファイル エクスプローラーから (つまり、Web サーバーからではなく) ダブルクリックするだけで Web アプリを実行した場合、ファイルは含まれません。

ng-include は Web サーバーの外部で動作しますか? Chrome でネットワーク ステータスを確認したところ、メソッドにOPTIONSと表示され、ステータスにロードがキャンセルされました

4

5 に答える 5

32

1 つの回避策は、テンプレートをインライン化することです。

<script type="text/ng-template" id="sample.html">
  <div>This is my sample template</div>
</script>

フィドル

これにより、テンプレートが Angular のテンプレート キャッシュに配置されます。ng-include ディレクティブが処理されると、Angular は最初にキャッシュをチェックします。

于 2013-01-20T01:13:10.780 に答える
22

問題はfile://プロトコルが原因です。ほとんどすべてのブラウザは、ファイルがから提供されるときにXHRリクエストを許可しませんfile://。そのため、AJAXリクエストは失敗します。そしてng-include、それらを使用してファイルをダウンロードします。

パラメータを使用してChromeを起動し、--allow-file-access-from-filesのチェックを無効にすることができますfile://

ファイルが同じフォルダにある場合、FireFoxはファイルをロードする必要があります(詳細については、これを確認してください)。

しかし、個人的には、 angular-seedプロジェクトで見つかる可能性のあるファイルを提供するために最も単純なNodeJSスクリプトを開始することを好みます。必要なのはnodeバイナリだけで、通常のWebサーバーのような感覚を与えます。

于 2013-01-20T10:46:52.430 に答える
6

同様の問題があり、単純な nodejs サーバーを実行して静的ファイルを提供することで解決しました - http-servernodejsがインストールされていることを確認してから、次のようにします。

インストール:

$ sudo npm install http-server -g

次に、プロジェクト ディレクトリから:

$ http-server

これで、次の場所からファイルにアクセスできます。

localhost:8080/whatever-file-you-have-in-your-directory.html

于 2015-02-04T21:26:38.387 に答える