我尝试将日期数组绑定到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个日期。
答案 0 :(得分: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>
&#13;
我认为你问题中提供的代码并不是你项目的真正摘录。否则,您有一个ReferenceError表示变量oModel
未定义(而是定义了oModel2
)。除此之外,绑定不起作用的实际原因必须是因为模型设置在核心上而Calendar控件是ComponentContainer的后代。在这种情况下,Core模型不会传播到Component。
- &GT; Avoid setting models on the Core if the app is component-based.
如果尚未完成:为了首先显示多个选定日期,必须明确禁用日历属性singleSelection
,因为默认情况下已启用它。