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>