我已经检查了各种资源,所有这些都导致很久以前关闭的错误。 Here是一个类似的问题,但我认为我的情况略有不同,并且至少持续达到angular.js 1.5。
我想验证,如果这是一个新的角度错误或者我错过了什么,因为我对角度相对较新。
查看此plunker以获取问题的简短演示
我在<infos>
块
ng-repeat
<body ng-controller="MainCtrl" class="container">
<div ng-repeat="item in items">
<h2>{{item.title}}</h2>
<infos></infos>
</div>
</body>
<infos>
指令在其第一个元素
ng-repeat
块
<div ng-repeat="(infoId, color) in item.infos">
<p style="background: {{color}}">{{color}}</p>
</div>
该指令加载了templateUrl
和replace:true
。
.directive('infos', function() {
return {
restrict: 'E',
replace: true,
templateUrl: 'infos.html'
};
})
渲染时,周围ng-repeat
的所有迭代的指令都在外部循环的最后ng-repeat
上呈现,而不是在周围ng-repeat
的每次迭代中呈现的预期。查看plunker演示,以便更好地了解,出现了什么问题。
我找到了几个问题的解决方法:
ng-repeat
元素
<div>
<div ng-repeat="(infoId, color) in item.infos">
<p style="background: {{color}}">{{color}}</p>
</div>
</div>
replace: true
template
代替templateUrl
。内联模板代码。<script type="text/ng-template" id="infos.html">...
加载模板可能有另一个解决方案,使用$templateCache
但我无法弄清楚如何预加载模板。