如何使用 controllerExtensions 给 SAP Fiori Elements List Report 的表格注册事件响应函数
步骤1:在 manifest.json 的 extends 区域里,注册 controllerExtensions:
源代码:
"extends": { "extensions": { "sap.ui.controllerExtensions": { "sap.suite.ui.generic.template.ListReport.view.ListReport": { "controllerName": "com.sap.jerry.jerryfioriapp.ext.controller.ListReportExtension", "sap.ui.generic.app": { "SEPMRA_C_PD_Product": { "EntitySet": "SEPMRA_C_PD_Product", "Actions": { "ActionName1": { "id" : "ActionName1", "text" : "Jerry的按钮", "press" : "onCustomAction1", "global": true } } } } } } } },
步骤2:
实现 controller extension:
sap.ui.define("com.sap.jerry.jerryfioriapp.ext.controller.ListReportExtension", [], function() { return { onCustomAction1 : function(oEvent) { alert('Hello'); }, onAfterRendering: function (oEvent) { debugger; var oContentTable = this.byId("com.sap.jerry.jerryfioriapp::sap.suite.ui.generic.template.ListReport.view.ListReport::SEPMRA_C_PD_Product--responsiveTable"); oContentTable.attachSelect(this._onSelectChanged); }, _onSelectChanged: function (oEvent) { debugger; } } });
步骤3:测试。
运行时,首先触发 onAfterRendering 钩子函数,通过byId API,根据 Smart Table 控件 ID,拿到其 table 实例:
SAP UI5 里所有的运行时创建实例,都存储在全局对象 mInstances 里,键为 控件 id,值为控件实例。
拿到 table 实例后,调用其 attach 方法,挂接对应的事件处理函数。
一切完成后,点击 Smart Table 某行项目,我们使用 attachSelect 注册的事件处理函数就会触发:
本文参考:Fiori Element List Report – Adjust column size automatically
赞 (0)