首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >handlebars.net中具有非嵌套数组的嵌套循环

handlebars.net中具有非嵌套数组的嵌套循环
EN

Stack Overflow用户
提问于 2018-06-07 12:10:12
回答 1查看 829关注 0票数 1

我正在尝试建立一个手柄模板,在当前到未来60天之前的15天内,一天一天的热图。

下面是我使用的模板模型

代码语言:javascript
复制
public class HeatMapDto
{
    public IEnumerable<HeatMapDateDto> HeatMapDates { get; set; }

    public IEnumerable<ProductDto> Products { get; set; }
}

这是我的模板的相关部分

代码语言:javascript
复制
<table style='width: 2000px'>
    <tr>
        <th style='width: 100px'>Product</th>
        <th style='width: 100px'>EAStart</th>
        <th style='width: 100px'>Release</th>
        {{#each HeatMapDates}}
        <th style='width: 50px'>{{FormattedDate}}</th>
        {{/each}}
    </tr>
    {{#each Products}}
    <tr>
        <td>{{ProductName}}</td>
        <td>{{FormattedEarlyAccessStart}}</td>
        <td>{{FormattedReleaseDate}}</td>
        {{#each @root.HeatMapDates}}
        <td style="background-color:{{SelectCellColor DateValue EarlyAccessDate ReleaseDate '#747dff' '3d07ff' '#8cb871' '#e9fbff'}}{{/SelectCellColor}}">&nbsp;</td>
        {{/each}}
    </tr>
    {{/each}}
</table>

HeatMapDates中填充了报表的所有时间,我可以迭代它们来生成列标题。

代码语言:javascript
复制
public class HeatMapDateDto
{
    public DateTime DateValue { get; set; }

    public string FormattedDate => DateValue.ToString("MM/dd");
}

public class HeatMapProductDto
{
    public string ProductName { get; set; }

    public DateTime? EarlyAccessStart { get; set; }

    public DateTime? ReleaseDate { get; set; }

    public string FormattedEarlyAccessStart => EarlyAccessStart?.ToString("MM/dd");

    public string FormattedReleaseDate => ReleaseDate?.ToString("MM/dd");
}

SelectCellColor是我在代码中注册的一个处理程序,当调用它时,这三个日期是未定义的,上下文是一个HeatMapDate。它的目的是确定传递给单元格的4种颜色中的哪种颜色: InEarlyAcccess、ReleaseDate、PostRelease或默认颜色,按顺序排列。

如果我像这个{{#each product in Products}}那样执行外部循环,Handlebars.Net会抛出一个异常:

System.AggregateException:发生了一个或多个错误。-> System.InvalidOperationException:序列包含多个元素

对于如何在这两个数组不是父-子数组的情况下进行迭代,有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-25 01:53:57

工具栏不支持variableName in语法,只支持#each enumerable语法。

您仍然可以使用嵌套循环-每个块创建一个新的上下文,并且父上下文总是可以通过../访问。因此,在您的示例中,外部循环中的this (或仅仅是隐式上下文)将是当前项,而在嵌套循环中,../将引用外部循环中的当前项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50740877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档