$ scopeに渡されない限り、AngularJS ng-includeはビューを含みません


121

それngIncludeが生の道を取ることができると仮定することは間違っていますか?私ngIncludeは次のように自分を設定しようとし続けます:

<div ng-include src="views/header.html"></div>

これは機能しませんが、私がこのようなことをすると、機能します。

// HeaderController
app.controller('HeaderCtrl', function($scope){
   $scope.templates = {[
     template: { url: 'views/header.html' }
   ]};

   $scope.template = $scope.templates[0].template;
});

私のindex.htmlで

<div ng-controller="HeaderCtrl">
  <div ng-include src="template.url"></div>
</div>

ngInclude範囲外の値以外はありませんか?もしそうなら、なぜそれがこのようになり、html部分の直接のインクルードではないのですか?

回答:


327

ng-include式を受け入れます。そこで明示的なURLを直接指定する場合は、文字列を指定する必要があります。

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

うん、見ただけだ。私が見ていた例は、古いバージョンのangularを使用していた。
チャド

44
今日の午後、これを理解しようとして多くの時間を費やしました。うちもちろんそれは、文字列にする必要があります。それは完全に理にかなっています。
Code Whisperer 2013年

アプリモジュールでngSanitizeを有効にすると機能しません。解決策を探しています。
ディダ2013

4
もう1つ、ページにはファイル名としてアンダースコアを含めることはできません。

5
小さな一重引用符は問題を解決します。正確な変化を見ることができませんでした(私のかわいそうな目)。二重引用符の中に一重引用符を追加することを単語で言及してください。
Fizer Khan

1

ng-include、他のディレクティブ(ng-classng-src...)がスコープからAngular式評価するため。引用符('')がない場合は、スコープの変数を検索します。


src属性を指定する必要がないことに注意してください。

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

書き換え可能:(より簡単)

<div ng-include="'views/header.html'"></div>

ng-includeを要素として使用することもできます

<ng-include src="'views/header.html'"></ng-include>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.