DisplayField - 如何格式化日期?

Joh*_*don 4 components extjs renderer

我需要显示数据的只读视图.我已选择DisplayField组件来执行此操作.我的问题是,我想要一种简单的方法来调用BasicForm.setValues(values)并在其中一个displayFields中自动正确呈现日期字符串.我没有找到任何能够为我做这件事的事情(例如渲染器功能),并且我将在调用之前手动格式化日期字符串setValues(values).有没有一些光滑的方式来做到这一点?

谢谢!

Bru*_*uce 6

好的,如果你使用的是直接表单加载,那么你需要监听表单的BasicForm'actioncomplete'事件.当此事件触发时,处理程序将提供两个参数.第一个是BasicForm,第二个参数是Ext.form.Action对象.我们专门寻找Ext.form.Action.Load对象.从这里我们可以访问action的result.data对象,我们可以在此处理程序返回之前按下数据值,并将值加载到表单中.

function fmtDate(sf, rec) {
  if ( rec[sf] ) {
    var dt = new Date(); dt.setTime(rec[sf] * 1000); return dt.format('l j F Y');
  }
};

myForm.getForm().on({
  actioncomplete: function(form, action) {
    if (action.type === 'load') {
      if (action.result.success) {
        var data = action.result.data;
        data.someFormattedDate = fmtDate('myDateTS', data);
      } else {
        //handle an error here
      }
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

现在您在表单中需要的是一个名为'someFormattedDate'的displayField,而Bob是你的叔叔(Aussie俚语对于它来说一切都很好).您还可以通过为myForm.getForm().load()调用提供'success:'函数来实现完全相同的功能.有关Ext.form.Action.Load的信息,请参阅ExtJS文档.干杯,t00bs.