1

我喜欢使用 2 dot:repeater(s) 嵌套在一个 dothtml 示例中:

<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}"'有人知道如何让它工作吗?

4

1 回答 1

1

在内部Repeater,您可以使用 just{value: Tasks}或 Alternative {value: _this.Tasks}

代码中还有第二个警告:RenderWrapperTag="table"如果您没有该tbody元素,这不是一个好主意。一些浏览器会尝试添加缺失的内容tbody,并可能破坏 DOM 结构并导致 DOMRepeater停止工作。

通常,您希望将元素放在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>
于 2017-07-18T07:37:58.607 回答