【问题标题】:Kendo template binding剑道模板绑定
【发布时间】:2026-01-27 16:05:01
【问题描述】:

我正在尝试像这样设置剑道模板:

fldInfo.template = '<a href="\\#"> #:kendo.toString(\\\\#:kendo.parseDate(\' \\\\#:data.' + field + '\\\\# \')\\\\#, "MM/dd/yyyy")# </a>';

这是为剑道网格定义的。

field 值将保存架构中列的名称。在这个特定的例子中,我绑定了一个发送的日期字段(.net datetime 数据类型)。但是因为来自 .NET--> JSON --> JS 的默认日期时间转换采用长日期格式,所以我尝试将其格式化为 MM/dd/yyyy。

我阅读了关于模板的剑道文档,其中说模板符号 # 应该用 4 \\\\ 转义,但我无法让它工作

感谢任何帮助。

【问题讨论】:

    标签: javascript kendo-ui kendo-grid


    【解决方案1】:

    也许可以试试这样的:

    fldInfo.template = '<a href="\\#"> #:kendo.toString(kendo.parseDate(data[field]), "MM/dd/yyyy")# </a>';
    

    如果这不起作用,我建议暂时硬连线field,因为由于 javascript 范围,它很可能在错误的地方寻找:

    fldInfo.template = '<a href="\\#"> #:kendo.toString(kendo.parseDate(data["fooField"]), "MM/dd/yyyy")# </a>';
    

    注意函数调用是如何嵌套的;您的第一个 # 需要转义,因为您希望它在输出标记中呈现。当解析器命中 #: 时,您输入一个代码块,并保留在代码中,直到下一个 # 再次切换回标记。

    希望这会有所帮助。

    【讨论】:

    • 谢谢乔!!第一个选项有效。我被这种使用 :# 渲染字段的心态困住了,从未想过使用这种方式访问​​ JS 属性 ... data["' + field + '"] ...