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

标签 javascript sapui5

我有一个 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 并且如果后面的值- end 为 NULLsap.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:

最佳答案

您可以使用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>

关于javascript - 如果值为空,则 sap.m.Text 的日期格式化程序不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57977288/

相关文章:

javascript - Canvas Sin曲线绘制

javascript - 提高 Javascript 性能的技巧

sapui5 - sap.ui.getCore().byId() 不返回任何元素

javascript - SAPUI5 将数据从一个 View 传递到另一个 View

javascript - 使标题保持在一定的窗口宽度?

javascript - 为什么将状态映射到 props 会给出未定义的结果?

javascript - 与 Javascript 和 jQuery 逻辑作斗争

url-routing - SAPUI5 中的路由 : How to implement passing of URL? 模型数据未初始加载

javascript - 和/或滤波器阵列之间

javascript - Uncaught Error : no data returned for views/AgeTypes.fragment.xml