2013-02-19 22 views
2

我正試圖在表單中加載記錄。其中一個字段類型是'datefield',並且有一個以毫秒爲單位的記錄字段。Ext JS 4:無法顯示'datefield'中記錄的日期

parital記錄數據:

topAccount:"ALPINE" 
tradeDate:1360167174553 
tradeId:"2110720401" 

和看法是

xtype: 'datefield', 
name: 'tradeDate', 
itemId: 'tradeDate', 
margin: 8, 
fieldLabel: 'Trade Date:', 
renderer: Ext.util.Format.dateRenderer('Y/m/d'), 

但是,當窗體被加載的記錄,我得到空場。

有人可以幫我解決這個問題嗎?

感謝 Tharahan

回答

5

1360167174553不是用於此目的的有效日期。 1920-12-01T13:00是。

如果你看一下Date datatype,你會看到:

DATE: { 
     convert: function(v) { 
      var df = this.dateReadFormat || this.dateFormat, 
       parsed; 

      if (!v) { 
       return null; 
      } 
      if (Ext.isDate(v)) { 
       return v; 
      } 
      if (df) { 
       return Ext.Date.parse(v, df); 
      } 

      parsed = Date.parse(v); 
      return parsed ? new Date(parsed) : null; 
     }, 
     sortType: st.asDate, 
     type: 'date' 
    } 
}); 

與多家,Ext.isDate()將失敗。然後,Ext.Date.parseDate.parse都需要一個字符串,其中的令牌不能僅支持毫秒。

如果你堅持使用毫秒試試這個:

Ext.define('YourModel', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'tradeDate', dateFormat: 'u' } 
    ] 
}); 
+0

謝謝您的回答。我認爲這是有效的日期。如果我做Ext.getCmp('tradeDate')。setValue(new Date(record.data.tradeDate));那麼你會得到正確的日期。 – jprism 2013-02-19 22:39:48

+0

是的。因爲'new Date()'接受毫秒。 – Izhaki 2013-02-20 00:50:23

+0

如果您堅持使用毫秒,請查看模型的[convert](http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Field-cfg-convert)選項 - 只需使用'new date()'將其轉換爲日期對象。我編輯了我的答案,告訴你如何。 – Izhaki 2013-02-20 00:52:13

相關問題