sap.ui.model.type.Date - 使用样式short / medium / long / full时的值错误

时间:2015-04-21 12:55:32

标签: sapui5

我遇到了一个错误,这似乎是OpenUI5中的一个错误..但由于我不是100%肯定我想检查我是否遗漏了什么。

我正在使用javascript对象作为JSONModel的数据源。此对象具有字符串格式 yyyymmdd 的“birthday”属性。我已经将JSONModel附加到核心对象,因此它可以在我的应用程序的所有控件中使用。

    obj = { birthday: "19890727" }; // July 27, 1989

    var model = new sap.ui.model.json.JSONModel();
    model.setData(obj);

    sap.ui.getCore().setModel(model);

然后我尝试使用数据绑定,以便我可以在TextView上显示生日。由于我不想在模型中以相同的格式显示此日期,因此我使用类型对象对其进行格式化。

var type_date = new sap.ui.model.type.Date({source: {}});
text_view_birthday.bindProperty("text",{
    path: "/birthday",
    type: type_date
});

以下Date对象也很有效:

var type_date = new sap.ui.model.type.Date({
                    source: {
                        pattern: "yyyymmdd"
                    },
                    pattern: "dd - mm - yy"
                });

我正在使用类 sap.ui.model.type.Date ,当我尝试使用它时,将 style 属性传递给它的任何可能的值(短/中/长/满),显示的日期实际上与模型不同。而不是7月,UI5显示1月!

var type_date =
        new sap.ui.model.type.Date({
            source: {
                pattern: "yyyymmdd"
            },
            style: "short"
        });
// Short: 1/27/89
// Medium: Jan 27, 1989
// Long: January 27, 1989
// Full: Friday, January 27, 1989

我试图调试sap-ui-core-dbg ..它超出了我......我没有成功

IMO有两种可能的情况

  1. 我正在使用Date类错误(我根据UI5开发人员指南创建了这个代码段,因为Model Type类的文档很差)。
  2. 这是一个错误!
  3. 请参阅下面的完整资料。

    <!DOCTYPE html>
    <meta name="robots" content="noindex">
    <html>
    
    <head>
      <script src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js" id="sap-ui-bootstrap" data-sap-ui-theme="sap_bluecrystal" data-sap-ui-libs="sap.ui.commons">
      </script>
      <meta charset="utf-8">
      <title>JS Bin</title>
    
      <script>
        obj = {
          birthday: "19890727"
        };
    
        var model = new sap.ui.model.json.JSONModel();
        model.setData(obj);
    
        sap.ui.getCore().setModel(model);
    
         // var type_date = new sap.ui.model.type.Date({source: {}}); // Correct: Result is Jul 27, 1989 (in my locale)
         // var type_date = new sap.ui.model.type.Date({
         // 				source: {
         // 					pattern: "yyyymmdd"
         // 				},
         // 				pattern: "dd - mm - yy"
         // 				}); // Correct: Result is 27 - 07 - 89 (ignore my locale)
    
        var type_date =
          new sap.ui.model.type.Date({
            source: {
              pattern: "yyyymmdd"
            },
            style: "full"
          });
         // Incorrect!
         // Short: 1/27/89
         // Medium: Jan 27, 1989
         // Long: January 27, 1989
         // Full: Friday, January 27, 1989
    
    
        var text_view_birthday = new sap.ui.commons.TextView();
    
        text_view_birthday.bindProperty("text", {
          path: "/birthday",
          type: type_date
        });
    
        text_view_birthday.placeAt("content");
      </script>
    </head>
    
    <body class="sapUiBody" role="application">
      <div id="content"></div>
    </body>
    
    </html>

    谢谢!

0 个答案:

没有答案