sap.m.Date的日期格式化程序,如果该值为空,则不可见

问题描述 投票:1回答:1

我有一个sap.m.Labelsap.m.Text。我从后端得到的值是NULL或类似Tue Oct 01 2019 02:00:00 GMT+0200的日期对象。

我想使用格式化程序将Tue Oct 01 2019 02:00:00 GMT+0200转换为Oct 01, 2019,并且如果后端的值为NULL,则sap.m.Labelsap.m.Text均不可见。

这是我的XML:

<Label text="{i18n>ZZDATAB}" id="StartDateLbl" 
  visible="{
    path:'itemDetailData>/StartDate',
    formatter:'ui.s2p.srm.sc.approve.util.Formatter.showElementOnUi'
  }">
  <layoutData>
    <sap.ui.layout:ResponsiveFlowLayoutData minWidth="192" weight="3"></sap.ui.layout:ResponsiveFlowLayoutData>
  </layoutData>
</Label>
<Text 
  text="{
    path:'itemDetailData>/StartDate',
    formatter:'ui.s2p.srm.sc.approve.util.Formatter.formatDateZ'
  }" 
  visible="{
    path:'itemDetailData>/StartDate',
    formatter:'ui.s2p.srm.sc.approve.util.Formatter.showElementOnUi'
  }"
  id="StartDateTxt" maxLines="0">
  <layoutData>
    <sap.ui.layout:ResponsiveFlowLayoutData weight="5"></sap.ui.layout:ResponsiveFlowLayoutData>
  </layoutData>
</Text>

我的格式化程序:

ui.s2p.srm.sc.approve.util.Formatter.formatDateZ = function (d) {
    if (d === "" || d === null || typeof(d) === "undefined") {
        return "";
    } else if (typeof(d) === "object") {
        var u = new Date(d);
        var s = u.toString();

        var result = s.substring(4, 10) + ", " + s.substring(11, 16);

        return result;
    }
    return "";
};

ui.s2p.srm.sc.approve.util.Formatter.showElementOnUi = function(obj) {
    if (obj === '') {
        return false;
    } else {
        return true;
    }
};

问题:如果我调试后端并使itemDetailData>/StartDate为空,那么即使认为它们应该是不可见的,输出仍然显示那些标签:

Start Date:
End Date:
javascript sapui5
1个回答
0
投票

您可以使用Expression Binding

并且您可以使用sap.ui.model.type.DateTime格式化日期对象和样式中等(例如,2019年12月31日)

<Label text="{i18n>ZZDATAB}" id="StartDateLbl" visible="{= ${itemDetailData>/StartDate} !== null}">
  <layoutData>
    <sap.ui.layout:ResponsiveFlowLayoutData minWidth="192" weight="3"></sap.ui.layout:ResponsiveFlowLayoutData>
  </layoutData>
</Label>
<Text 
  text="{path : 'itemDetailData>/StartDate', type : 'sap.ui.model.type.DateTime', formatOptions:{ style: 'medium'}}" visible="{= ${itemDetailData>/StartDate} !== null}" id="StartDateTxt" maxLines="0">
  <layoutData>
    <sap.ui.layout:ResponsiveFlowLayoutData weight="5"></sap.ui.layout:ResponsiveFlowLayoutData>
  </layoutData>
</Text>
© www.soinside.com 2019 - 2024. All rights reserved.