答案 0 :(得分:2)
您可以使用Navigation事件来执行此操作。首先,在视图中声明datepicker(在xml视图的下面的示例中),并为Navigation事件提供回调。
<DatePicker id="some_date" navigate="onClickDate"/>
然后,在此视图的控制器中为回调函数声明。
onClickDate: function(){
//do something
}
希望这会有所帮助。
答案 1 :(得分:1)
您可以使用navigate
事件,但是每次用户在日历中导航时,该事件也会再次触发。
从技术上讲,您可以使用值帮助图标(press
)的oDatePicker._getValueHelpIcon().attachPress()
事件,但是由于它使用控件的私有方法,因此可能会对此感到不满意。
答案 2 :(得分:1)
您可以使用“ isOpen()” 来显示日期,或使用“ getValue()” 来获取日历上最后选择的值并由日历返回。更改事件,此处提供其他方法>> DatePicker Methods
//DatePicker View.js
var datePicker = new DatePicker(this.createId("calendarSelect"), {
width: "80%",
maxDate: new Date(),
valueFormat: "yyyy-MM-dd",
displayFormat: "long",
change: function() {
oController.someFunction();
},
value: new Date().toDateString("en-GB")
});
//DatePicker Controller.js
someFunction: function() {
console.log(this.getView().byId("calendarSelect").isOpen()); // returns true or false when the calendar is open
console.log(this.getView().byId("calendarSelect").getValue()); //to get value selected
}
答案 3 :(得分:1)
从1.62 commit 开始,navigate
event提供了一个附加标志参数"afterPopupOpened"
,仅在选择器刚刚打开时才设置为true
。否则,当用户仅在日历中导航时,它通常是false
。
这是一个演示:
sap.ui.getCore().attachInit(() => sap.ui.require([
"sap/m/DatePicker",
"sap/m/MessageToast",
], (DP, MsgToast) => new DP({
placeholder: `Press F4 or click on the icon -->`,
navigate: e => e.getParameter("afterPopupOpened") && MsgToast.show("Calendar opened!"),
}).setWidth("16rem").placeAt("content")));
<script id="sap-ui-bootstrap"
src="https://openui5nightly.hana.ondemand.com/resources/sap-ui-core.js"
data-sap-ui-libs="sap.ui.core, sap.m, sap.ui.unified"
data-sap-ui-async="true"
data-sap-ui-theme="sap_belize"
data-sap-ui-compatversion="edge"
data-sap-ui-xx-waitfortheme="true"
></script>
<body id="content" class="sapUiBody sapUiSizeCompact" style="height: 100%;"></body>