Dotvvm Repeater嵌套在Repeater中
Dotvvm Repeater nested in Repeater
我喜欢在一个 dothtml 中嵌套使用 2 dot: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 尝试不同的选项。在任务部分,但我没有让它工作。在其他框架中,可以给主中继器起别名
示例:'DataSource="{value: Projects}" as project' 然后它可以在嵌套的中继器中使用 'DataSource="{value: project.Tasks}"' 有人知道如何让它工作吗?
在内部 Repeater
中,您可以只使用 {value: Tasks}
,或者 {value: _this.Tasks}
。
代码中还有第二个警告:如果没有 tbody
元素,RenderWrapperTag="table"
不是一个好主意。某些浏览器会尝试添加缺失的 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>
我喜欢在一个 dothtml 中嵌套使用 2 dot: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 尝试不同的选项。在任务部分,但我没有让它工作。在其他框架中,可以给主中继器起别名 示例:'DataSource="{value: Projects}" as project' 然后它可以在嵌套的中继器中使用 'DataSource="{value: project.Tasks}"' 有人知道如何让它工作吗?
在内部 Repeater
中,您可以只使用 {value: Tasks}
,或者 {value: _this.Tasks}
。
代码中还有第二个警告:如果没有 tbody
元素,RenderWrapperTag="table"
不是一个好主意。某些浏览器会尝试添加缺失的 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>