我在重复语句旁边使用if时遇到了麻烦。
我正在获取数据,如下所示:
modules: Array[1]
0: Object
embed: "<iframe width="600" height="338" src="https://www.youtube.com/embed/UqdDAn4_iY0"
frameborder="0" allowfullscreen="" style="margin:0px auto;display:block;"></iframe>"
type: "embed"
1: Object
src: "https://m1.behance.net/rendition/modules/127899607/disp/072cebf2137c78359d66922ef9b96adb.jpg"
type: "image"
因此,如果模块的类型是image,我想得到image。如果模块的类型是embed,我想得到iframe。我当前的视图代码是:
<div ng-repeat="project in project.modules" ng-if="project.type == 'image'">
<img src="{{ project.src }}" class="img-responsive img-centered" alt="{{ project.name }}"/>
</div>
如果我取出ng-if就可以正常工作,控制台输出以下错误:
Error: Multiple directives [ngRepeat, ngIf] asking for transclusion on: <!-- ngRepeat: project in project.modules -->
5条答案
按热度按时间ndh0cuux1#
你可以使用filter来代替ngIf。你的代码应该像这样:
它会起作用的。
您试图在代码中执行的解决方案不能像ngIf和ngRepeat那样执行,因为它们都试图删除和替换一些元素,并执行一些转换。
检查此问题https://github.com/angular/angular.js/issues/4398
还要检查过滤器https://docs.angularjs.org/tutorial/step_09的使用情况
此问题应有助于使用ngRepeat和过滤器ng-repeat :filter by single field
eeq64g8w2#
这是因为您必须在ng-repeat块中执行if条件。
为什么你需要ng-if和ng-repeat放在一起?
wlsrxk513#
屏幕上应仅显示“文章”和“文章1
zzwlnbp84#
你不能在同一个元素上同时使用
ng-repeat
和ng-if
,因为它们都想删除和替换整个元素。这是有道理的--当ng-repeat
说“hey draw this”而ng-if
说“hey no don 't draw this”时,你会怎么做?我认为这里最好的解决方案是预处理你的数组,只包含你想要的记录,然后
ng-repeat
覆盖它,不包含ng-if
。你也可以把ng-if
移到ng-repeat
元素内部的一个元素,这样就不会有关于显示和隐藏什么的歧义。ehxuflar5#
您也可以只使用ngHide或ngShow根据特定条件动态显示和隐藏元素。