【问题标题】:Dotvvm Repeater nested in RepeaterDotvvm 中继器嵌套在中继器中
【发布时间】:2017-07-18 15:37:58
【问题描述】:

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

【问题讨论】:

    标签: dotvvm


    【解决方案1】:

    在内部Repeater 中,您可以只使用{value: Tasks},或者{value: _this.Tasks}

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

    一般来说,您希望将Repeater 放在&lt;table&gt; 元素内并使用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>
    

    【讨论】:

    • 谢谢这会起作用,我认为 WrapperTagName="tbody" 可以解决问题,在我的原始代码中我使用 标签。(我将问题的代码更改为使用的对象在示例项目中)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多