在剑道的日期管道中包含变量值(动态格式):AngularJS

Posted

技术标签:

【中文标题】在剑道的日期管道中包含变量值(动态格式):AngularJS【英文标题】:Include Variable value in date pipe in Kendo (Dynamic format) : AngularJS 【发布时间】:2019-05-09 15:05:39 【问题描述】:

我有一个日期值的剑道列,我们在下面的列内的模板属性中使用了这样的管道。

现在我想根据日期格式更改剑道网格列的格式

我的问题/问题:- 我正在根据用户偏好从 localStorage 中检索日期格式,例如 dd-MM-yyyy 或 MM-dd-yyyy 或 dd-MM-yy 或 MM-dd-yy。

但是,每当我在模板中使用该变量(包含日期格式,例如:dd-MM-yyyy)代替具有相同默认日期管道格式的默认日期管道时,剑道不接受它并给出错误:不能读取未定义剑道的属性“超时”

const myDateFormat = this.$localStorage.dateFormat;   
function getDefaultColumns($translate) 
        return [
            
              field: 'INVOICE_DATE',
              title: $translate.instant('invoiceDate'),
              headerTemplate: ' \'invDate\' | translate ',
              template: ' dataItem.INVOICE_DATE | date: \'yyyy-MM-dd\' ',//i am using the localStorage value here 
              filterable: 
                ui(element) 
                  element.kendoDatePicker(
                    format: 'yyyy-MM-dd'
                  );
                
              ,
              width: 100
            
        ];
    

【问题讨论】:

kendo 和 angularjs 之间的范围有点棘手,你能试试打印 dateFormat 吗?结果如何? 如果我使用 dateFormat 这样的日期:dateFormat,它不会检测到变量 dateFormat,因为我正在使用 Visual Studio 代码,它说 dateFormat 已声明但从未使用过。 【参考方案1】:

我认为你可以使用 ES2015 模板字符串完成你想要的。

考虑对您的程序清单进行此修改:

function getDefaultColumns($translate) 
    let dateFormat = 'yyyy-MM-dd';
    return [
    
          field: 'INVOICE_DATE',
          title: $translate.instant('invoiceDate'),
          headerTemplate: ' \'invDate\' | translate ',
          template: ` dataItem.INVOICE_DATE | date: \'$dateFormat\' `,
          filterable: 
            ui(element) 
              element.kendoDatePicker(
                format: dateFormat
              );
            
          ,
          width: 100
        
    ];

【讨论】:

我尝试过这样做,但我认为由于剑道,它会说“可能未处理的拒绝:” 对不起,如果没有更多信息,这是我能做的最好的事情。考虑编辑您的问题以包含可运行的 sn-p。然后我可以调整你的 sn-p 直到它起作用。 ES2015 模板字符串使它工作,我没有在开始和结束时应用 ` 。

以上是关于在剑道的日期管道中包含变量值(动态格式):AngularJS的主要内容,如果未能解决你的问题,请参考以下文章

剑道网格日期格式

日期格式在重新加载剑道网格时重置

日期列中的剑道网格格式时间问题[重复]

剑道网格导出日期格式不正确

剑道网格中的 JavaScript 日期

如何使用剑道验证器验证日期格式为 yyyy-MM-dd?