如何在ExtJS4.1模型中将时间戳转换为自定义日期格式?

Amy*_*Amy 2 extjs

我想在服务器返回数据后立即将时间戳转换为自定义日期格式.我尝试在Ext.data.field中使用"convert":http://docs.sencha.com/ext-js/4-1/#! /api/Ext.data.Field-cfg-convert

但我不能说得对.这是我的模特.

Ext.define('AM.model.Comment',{
    extend: 'Ext.data.Model',
    fields: [
        { name: 'createdTime', type: 'date', convert:function(v,record){record.parseDate(v,record);}}, // datetime
    ],

    proxy: {
        type: 'rest',
        url:'../comments',
        writer:{
            type:'json'
        },
        reader: {
            type: 'json'
        }
    },
    parseDate:function(v,record){
        console.log(v); //show 1347465600000 
        console.log(Ext.Date.format(new Date(v), 'Y-m-d')); //show 2012-09-13
        return Ext.Date.format(new Date(v), 'Y-m-d');
    }
});
Run Code Online (Sandbox Code Playgroud)

加载后,我检查了firebug,发现"createdTime"字段是"未定义".有人可以指出我的错误吗?谢谢!

我可以在不使用"转换"的情况下实现,只需Ext.Date.format(new Date(v), 'Y-m-d')在其他组件中使用即可.但我认为在模型中这样做会更好.然后,每个组件始终可以读取正确的日期格式作为查询它.

Amy*_*Amy 5

我找到了解决方案.我没有使用"convert",而是覆盖了reader的getData()方法.

Ext.define('AM.model.Comment',{
    extend: 'Ext.data.Model',
    fields: [
        { name: 'createdTime', type: 'datetime'},
    ],

    proxy: {
        type: 'rest',
        url:'../comments',
        writer:{
            type:'json'
        },
        reader: {
            type: 'json',
            getData:function(data){
                for(i = 0; i < data.length; i++){
                    data[i].createdTime = Ext.Date.format(new Date(data[i].createdTime), "Y-m-d");
                }
                return data;
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

如果有人有更好的解决方案,请告诉我.我仍然想知道为什么"转换"不起作用.如果有人知道原因,请告诉我.谢谢!