【问题标题】:Kendo.ParseDate throws syntax error when trying to format date in template尝试在模板中格式化日期时,Kendo.ParseDate 引发语法错误
【发布时间】:2017-11-08 19:18:57
【问题描述】:

这可能是一个很容易解决的问题,但我已经没有耐心试图找到解决方案了。我正在使用剑道 ui 内联网格,并且我有两个日期字段。这些值本身似乎以字符串的形式出现,我可以通过使用下面的 oode 来解决。

        <div id="Grid" class="inline-edit-grid"
             <!-- ... -->
             data-columns="[
             <!-- ... -->
                { field: 'RequestedDate',title: 'Requested', width: 15, template: '#= kendo.parseDate(RequestedDate,'M/dd/yyyy h:mm tt')#'},
                { field: 'AcceptedDate',title: 'Accepted', width: 15, template: '#= kendo.parseDate(AcceptedDate,'M/dd/yyyy h:mm tt')#'},
              ]">

这可以给我一个日期值,但它的格式是“Thu Nov 09 2017 13:15:00 GMT-0500(东部标准时间)”。相反,我希望格式为“M/dd/yyyy h:mm tt”。因此我尝试使用代码

 { field: 'RequestedDate',title: 'Requested', width: 15, template: '#= kendo.toString(kendo.parseDate(RequestedDate,'M/dd/yyyy h:mm tt'))#'}

这会在格式字符串中引发语法错误。无论如何,这不应该发生,而且我已经尝试了很多格式字符串的组合,在这一点上得到了相同的结果。

【问题讨论】:

    标签: html kendo-ui kendo-grid


    【解决方案1】:

    问题是在模板的带引号的字符串中使用引号。您可以通过下面的字符串着色方式看到问题:

    '#= kendo.toString(kendo.parseDate(RequestedDate,'M/dd/yyyy h:mm tt'))#'
    

    您可以尝试使用双引号将带有单引号的字符串括起来:

    "#= kendo.toString(kendo.parseDate(RequestedDate,'M/dd/yyyy h:mm tt'))#"
    

    反之亦然:

    '#= kendo.toString(kendo.parseDate(RequestedDate,"M/dd/yyyy h:mm tt"))#'
    

    或者用\转义字符串中的引号。你可能需要双 \\ 才能逃脱,我不记得了:

    '#= kendo.toString(kendo.parseDate(RequestedDate,\'M/dd/yyyy h:mm tt\'))#'
    

    其中一个或全部应该可以工作。

    好的,试试这个:

    template: '#= kendo.toString(new Date(RequestedDate), "G")#',
    

    您不需要解析日期,而是从中创建一个 javascript 日期,然后使用 kendo.toString 对其进行格式化。 在这里查看https://docs.telerik.com/kendo-ui/framework/globalization/dateformatting 格式选项。

    【讨论】:

    • 我应该提到我已经尝试过切换到双引号。由于某种原因,这导致正斜杠被解释为结束 div。或者,将双引号放在 # 符号的外部会导致许多其他错误。转义实际上产生了一个有趣的结果,即导致值返回为 null,而双重转义导致了许多错误。这可能是数据列本身创建方式的问题?
    • 请参阅上面的解决方案。我在道场中对此进行了测试,并认为这是正确的方法。
    • 一定有其他事情发生,因为当我使用双引号时,此解决方案导致红色错误消息的实心墙。当我使用单引号时,我得到一个单一的语法错误。
    • 因此,一旦我将模板分离到它自己的
    【解决方案2】:

    引号错误。

    改成

    '#= kendo.toString(kendo.parseDate(RequestedDate,"M/dd/yyyy h:mm tt"))#'
    

    应该修复错误。

    希望这对你有帮助:)

    【讨论】:

    • 我应该提到我已经尝试过切换到双引号。由于某种原因,这会导致正斜杠被解释为结束 div。
    猜你喜欢
    • 2017-11-11
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多