我有一个 JSON 模型,其中包含一些存储为纪元值的日期值:
var oData = [{
string : "SomeValue",
date : 1404172800000
}];
当我加载模型时,我使用以下方法将此纪元转换为正确的 Javascript Date 对象:
for (var i = 0; i < oData .length; i++) {
var dateLong = oData[i].date;
oData[i].date = new Date(dateLong);
}
然后,在我的表中,我使用格式化程序函数呈现该列:
var oDateColumn = new sap.ui.table.Column({
label: new sap.ui.commons.Label({
text: "A Date"
}),
template: (new sap.ui.commons.TextView({
text : {
parts : [date],
formatter : function(oValue) {
if (oValue != undefined) {
var yyyy = oValue.getFullYear().toString();
var mm = (oValue.getMonth()+1).toString(); // getMonth() is zero-based
var dd = oValue.getDate().toString();
return yyyy + '/' + (mm[1]?mm:"0"+mm[0]) + '/' + (dd[1]?dd:"0"+dd[0]);
} else return "";
}
},
textAlign : sap.ui.core.TextAlign.Right
})),
sortProperty : "date",
filterProperty : "date",
filterOperator : sap.ui.model.FilterOperator.EQ
});
这工作正常,前纪元现在是一个日期,很好地呈现为“2014/07/01”
但是,过滤不是针对格式化日期,而是针对原始 Date 对象 - 如果我过滤'2014/07/01'我没有得到任何结果;如果我过滤'1404172800000'我得到过滤后的结果...
我尝试在 filterProperty 上使用格式化程序,但无法使其正常工作。
有谁知道如何让用户过滤格式化日期?