为日历绑定selectedDates Aggregation

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

我试图将一组日期绑定到sap.ui.unified.Calendar但没有成功。我相信我离解决方案并不遥远。

这是代码:

var oCal = new sap.ui.unified.Calendar();
var oModel2 = new sap.ui.model.json.JSONModel([
    {myDate: new Date("2018-01-10"), tt:""},
    {myDate: new Date("2018-01-11"), tt:""},
    {myDate: new Date("2018-01-12"), tt:""},
]);
sap.ui.getCore().setModel(oModel, "MyData3");
var oItemTemplate = new sap.ui.unified.DateRange({
    startDate: "{MyData3>myDate}",
    endDate: "{MyData3>myDate}"
});     
oCal.bindAggregation("selectedDates", "MyData3>/", oItemTemplate);

我没有任何例外。该模型的数据填充了3个Date类型的对象,但我没有在日历中预先选择这3个日期。

如果我手动填充selectedDates聚合(没有绑定),它将选择这3个日期。

sapui5
1个回答
0
投票

这是一个有用的最小例子:

sap.ui.getCore().attachInit(() => sap.ui.require([
  "sap/ui/unified/Calendar",
  "sap/ui/unified/DateRange",
  "sap/ui/model/json/JSONModel",
], (Calendar, DateRange, JSONModel) => new Calendar({
  singleSelection: false
}).bindAggregation("selectedDates", {
  path: "MyData3>/",
  template: new DateRange({
    startDate: "{MyData3>myDate}",
    endDate: "{MyData3>myDate}",
  }),
}).setModel(new JSONModel([
  {myDate: new Date("2018-01-10")},
  {myDate: new Date("2018-01-11")},
  {myDate: new Date("2018-01-13")},
]), "MyData3").placeAt("content")));
<script src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js" id="sap-ui-bootstrap"
  data-sap-ui-libs="sap.ui.unified"
  data-sap-ui-preload="async"
  data-sap-ui-theme="sap_belize"
  data-sap-ui-compatVersion="edge"
></script><body id="content" class="sapUiBody sapUiSizeCompact"></body>

我假设你问题中提供的代码不是你项目的真正摘录。否则,你会得到一个ReferenceError,说明变量oModel是未定义的(相反,定义了oModel2)。除此之外,绑定不起作用的实际原因必须是因为模型设置在核心上而Calendar控件是ComponentContainer的后代。在这种情况下,Core模型将不会传播到Component。

- > Avoid setting models on the Core if the app is component-based.


如果尚未完成:为了在第一个位置显示多个选定日期,必须明确禁用Calendar属性singleSelection,因为它默认情况下已启用。

© www.soinside.com 2019 - 2024. All rights reserved.