我喜欢在一个dothtml中使用2点:repeater(s) 例如:
<dot:Repeater DataSource="{value: Projects}">
<div class="project">
<dot:LinkButton Click="{command: _root.RedirectToTasks(Id)}">{{value: Title}}</dot:LinkButton>
<dot:Repeater DataSource="{value: _parent.Tasks}" WrapperTagName="table">
<ItemTemplate>
<tr>
<td>{{value: Title}}</td>
<td>{{value: Completed ? ("Finished: " + CompletionDate) : "Not yet"}}</td>
<td>
<dot:LinkButton Text="Done"
Click="{command: CompleteTask()}"
Visible="{value: !Completed}" />
</td>
</tr>
</ItemTemplate>
</dot:Repeater>
</div>
</dot:Repeater>
我为_parent尝试了不同的选项。在任务部分,但我没有让它工作。在其他框架中,可以为主中继器添加别名 例如:&#39; DataSource =&#34; {value:Projects}&#34;作为项目&#39;然后它可以在嵌套转发器中使用&#39; DataSource =&#34; {value:project.Tasks}&#34;&#39;有人知道如何使这个工作吗?
答案 0 :(得分:1)
在内部Repeater
中,您只能使用{value: Tasks}
,或{value: _this.Tasks}
。
代码中还有第二个警告:如果您没有RenderWrapperTag="table"
元素,则tbody
不是一个好主意。某些浏览器会尝试添加缺少的tbody
,并且可能会破坏DOM结构并导致Repeater
停止工作。
通常,您希望将Repeater
放在<table>
元素中并使用RenderWrapperTag="tbody"
:
<table>
<dot:Repeater DataSource="{value: Tasks}" WrapperTagName="tbody">
<ItemTemplate>
<tr>
<td>{{value: Title}}</td>
<td>{{value: Completed ? ("Finished: " + CompletionDate) : "Not yet"}}</td>
<td>
<dot:LinkButton Text="Done"
Click="{command: CompleteTask()}"
Visible="{value: !Completed}" />
</td>
</tr>
</ItemTemplate>
</dot:Repeater>
</table>