我为控制器上的表创建了一个模板,该模板包含一些获取oData的文本单元格,但也包含一个组合框和复选框,它们具有自己的功能,在创建模板之前非常冗长。此模板最初位于XML端,但必须将其移至控制器端才能过滤正确的oData。
如何将该功能添加到复选框?另外,我可以格式化日期/时间,只显示我在xml方面的月份吗?
var oTemplate = new sap.m.ColumnListItem({
cells: [
new sap.m.Text({
text: "{ID}"
}),
//this does not work
new sap.m.CheckBox({
select: function(){
this.estimatePercentageSelect();
}
}),
new sap.m.ComboBox({
items: [new sap.ui.core.ListItem("cMonth", {
text: currentMonthName,
key: currentMonthName
}),
new sap.ui.core.ListItem("month1", {
text: monthName1,
key: monthName1
}),
new sap.ui.core.ListItem("month2", {
text: monthName2,
key: monthName2
}),
new sap.ui.core.ListItem("month3", {
text: monthName3,
key: monthName3
})
]
}),
new sap.m.Text({
text: "{INSTALL}"
}),
//this formatting also does not work
new sap.m.Text({
text: "{DATE}"
/*,
type: "sap.ui.model.type.DateTime",
formatOptions: "{pattern: 'MMM'}" */
}),
new sap.m.Text({
text: "{DWN}"
}),
new sap.m.Text({
text: "{EST}"
}),
new sap.m.Text({
text: "{PLAN}"
})
]
});
答案 0 :(得分:0)
以下是我对您的代码的反馈:
复选框功能:
new sap.m.CheckBox({
select: function(){
this.estimatePercentageSelect();
}
}),
此处此对象会导致问题,因为此将引用您的控件(复选框),而不是您的控制器。
请改为:
new sap.m.CheckBox({
select: [
this.estimatePercentageSelect, this
]
}),
并在您的函数中,让对象进行检查。
estimatePercentageSelect : function(oEvent) {
var oSource = oEvent.getSource(); // your clicked checkbox
var oContext = oSource.getBindingContext().getObject(); // checkbox binding object/context
console.log(oContext);
}
创建日期对象:
var oDateType = new sap.ui.model.type.Date({
source: {
pattern: "yyyymmdd"
},
style: "MMM"
});
然后将其传递给您的控件:
new sap.m.Text({
text: {
path: "DATE",
type: oDateType
}
}),
如果这对您有用,请告诉我。很高兴改进代码。