我有一个ng-repeat,里面有一个包含不同的html部分。
<div ng-repeat="item in feedItems">
<div ng-include="'item.itemType.html'">
</div>
</div>
例如,如果itemType = 40,则显示40.html,如果它显示80.html(部分的名称将被修复,但现在让它保持简单):
到目前为止一切顺利。我现在的问题是我需要继续使用部分html中的项目数据。此外,每个部分都有一个专用的控制器,但我相信通过在每个ng-include中添加ng-controller是可行的。
例如:我的40.html部分包含:
40.html:
<span>{{item.body.text}}</span>
80.html:
<h1>{{item.message.text}}</span>
我甚至不确定我想要达到的目标是否可行。有什么想法吗?
答案 0 :(得分:0)
ng-include创建一个子范围,该范围原型继承自ng-repeat中创建的范围。 80.html到{{item.message.text}}中的引用应该可以正常工作,因为在该子范围上没有定义“item”,因此它将跟随继承链并在父级上找到“item”(或父母的父母)范围。
原型继承有时会导致一些意想不到的结果,特别是当你处理原语而不是对象时;但是,你展示的例子似乎并不会与这些事情发生冲突。