2

:内にテンプレートを動的にロードしようとしていますng-repeat

<ul>
    <li ng-repeat="prop in entity" >
        <div ng-include src="prop.template"></div>
    </li>
</ul>

prop.templateテンプレートのURLと同じです。例:'partials/form/text.html'。上記のコードは次のエラーを生成します:

Error: 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: [["prop.template; newVal: \"partials/form/text.html\"; oldVal: undefined","prop.template; newVal: \"partials/form/text.html\"; oldVal: undefined" .... (and so on)

prop.templateテンプレートのURLを取得し、そのファイルからHTMLをDOMに挿入するにはどうすればよいng-repeatですか?

4

2 に答える 2

2

http://docs.angularjs.org/api/ng。$rootScope.Scope#$ digest

現在のスコープのすべてのウォッチャーとその子を処理します。ウォッチャーのリスナーはモデルを変更できるため、$ digest()は、リスナーが起動しなくなるまでウォッチャーを呼び出し続けます。これは、無限ループに入る可能性があることを意味します。この関数は、「最大反復制限を超えました」をスローします。反復回数が10を超える場合。

問題はここのコードではなく、完全に機能しているはずです。ここで実際の例を参照してください:http://jsfiddle.net/fmjf8/2/

問題は、ing配列または配列内のテンプレートに要素が多すぎるか、含まれてngRepeatいるテンプレートが多すぎる処理を実行しているため、Angularの無限ループ保護が強化されている可能性があることです。私は2番目に投票します

于 2012-09-11T04:30:57.797 に答える
2

私はこれが少し無関係であることを知っていますが、私は同様の問題を探していました、そして私の探求はある時点で私をここに連れて来ました。そして、インターネット上にはAngularに関する情報源があまりないので、他の不幸な人々のためにこれをここに書いています。

ng-includeに関する私の問題:

ルートパラメータからng-viewをロードしたテンプレート(htmlファイル)ビューと、これらのテンプレートの1つを別のテンプレート内で参照するng-includeがありました。角度側でもまったく同じ応答が得られました。

私の理解から、これは起こります:

ng-includeがテンプレートhtmlファイルを元のファイルに埋め込もうとすると、最初からそれを行おうとします。つまり、元のhtmlファイル、共有ファイル、テンプレートすべてを含むすべてが再ロードされます。

templateX.html-> ng-include(templateY)-> templateX.html-> templateY ....したがって、実際の無限ループ、ダイジェストは、過剰なDOMによるブラウザーのクラッシュを防ぐだけです。

次に、相対パスの代わりにフルパス名を使用しようとしましたが、問題は解決しました。

おそらく、ng-include内でフルパス名を試して、問題を解決することができます。

これが少し役立つことを願っています。

于 2012-11-15T17:57:12.287 に答える