我希望根据某些过滤条件隐藏Fiori应用程序的详细信息页面中的批准/拒绝按钮。过滤器通过视图/控制器扩展添加到主列表视图(左侧视图)中。 现在,如果用户选择某种类型的过滤器(例如,过去订单) - 那么批准/拒绝按钮不应显示在订单详细信息页面中。 这就是我在Header / Details视图中定义按钮的方法
this.oHeaderFooterOptions = {
oPositiveAction: {
sI18nBtnTxt: that.resourceBundle.getText("XBUT_APPROVE"),
id :"btn_approve",
onBtnPressed: jQuery.proxy(that.handleApprove, that)
},
oNegativeAction: {
sI18nBtnTxt: that.resourceBundle.getText("XBUT_REJECT"),
id :"btn_reject",
onBtnPressed: jQuery.proxy(that.handleReject, that)
},
但是在运行时,这些按钮没有分配我提到的ID,而是使用__button0和__button1的ID创建。
有没有办法在主列表视图中隐藏这些按钮?
谢谢。
答案 0 :(得分:2)
<强>推荐:强>
SAP Fiori设计原则仅涉及禁用页脚按钮而不是更改Button
的可见性。
Read More here about Guidelines
根据过滤条件,你可以这样禁用:
this.setBtnEnabled("btn_approve", false);
再次启用:this.setBtnEnabled("btn_approve", true);
同样,您可以使用this.setBtnText("btn_approve", "buttonText");
其他方式:@TobiasOetzel表示使用
this.setHeaderFooterOptions(yourModifiedHeaderFooterOptions);
答案 1 :(得分:1)
您可以多次在控制器上调用setHeaderFooterOptions,例如:
//Code inside of the controller
_myHeaderFooterOptions = {
oPositiveAction: {
sI18nBtnTxt: that.resourceBundle.getText("XBUT_APPROVE"),
id :"btn_approve",
onBtnPressed: jQuery.proxy(that.handleApprove, that)
},
oNegativeAction: {
sI18nBtnTxt: that.resourceBundle.getText("XBUT_REJECT"),
id :"btn_reject",
onBtnPressed: jQuery.proxy(that.handleReject, that)
}
},
//set the initial options
onInit: function () {
this.setHeaderFooterOptions(this._myHeaderFooterOptions);
},
//modify the options in an event
onFilter : function () {
//remove the negative action to hide it
this._myHeaderFooterOptions.oNegativeAction = undefined;
this.setHeaderFooterOptions(this._myHeaderFooterOptions);
},
//further code
因此,通过操纵_myHeaderFooterOptions,您可以影响显示的按钮。
答案 2 :(得分:-1)
首先,在定义HeaderFooterOptions时,您应该使用 sId
而不是 id
,您可以通过 {{1}获取页脚按钮}} ,例如,批准按钮。
sId
请检查以下代码段:
S2.view.controller:您在下面定义了过滤器事件处理程序,并使用EventBus将事件this._oControlStore.oButtonListHelper.mButtons["btn_approve"]
发布到OrderTypeChanged
。
S3.view.controller
S3.view.controller :从onFilterChanged: function(oEvent) {
// Set the filter value, here i use hard code
var sFilter = "Past Orders";
sap.ui.getCore().getEventBus().publish("app", "OrderTypeChanged", {
filter: sFilter
});
}
订阅活动OrderTypeChanged
。
S2.view.controller