SAP RAP Fiori Elements 应用程序不触发 Fragment 事件

问题描述 投票:0回答:1

我使用SAP的Restful应用程序框架构建了oData V4-Service。 我使用此服务构建了 Fiori 应用程序 (Fiori Elements)。现在,我尝试创建一个自定义操作来打开 XML 片段(上传文档并确认/拒绝某些数据)。 但是这个Fragment的Button-Actions不会被触发。

我对 Fiori 开发还很陌生,因此我无法解释为什么......我使用在互联网上找到的教程构建我的应用程序。

这是我添加到 Fiori 应用程序对象页面上的表中的操作 enter image description here

在我的manifest.json中我创建了这个编码

"toOpenNotification/@com.sap.vocabularies.UI.v1.LineItem": {
  "actions": {
    "ExtEquipmentObjectPage": {
      "press": "my.custom.service.ext.controller.ExtEquipmentObjectPage.onClose",
      "visible": true,
      "enabled": true,
      "requiresSelection": true,
      "text": "Close Notification"
      }
    }
 }

这是调用ExtEquipmentObjectPage的onClose方法。

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "sap/ui/core/Fragment"
], function (Controller, Fragment) {
    'use strict';

    return {
        pDialog: null,



        onClose: function (oEvent) {
            //var oView = this.getView();
            if (!this.pDialog) {
                this.loadFragment({
                    // id: "excel_upload",
                    name: "my.custom.service.ext.fragment.ExcelUpload",
                    type: "XML",
                    controller: this
                }).then((oDialog) => {
                    //var oFileUploader = Fragment.byId("excel_upload", "uploadSet");
                    //oFileUploader.removeAllItems();
                    this.pDialog = oDialog;
                    this.pDialog.open();
                })
                    .catch(error => alert(error.message));
            } else {
                //var oFileUploader = Fragment.byId("excel_upload", "uploadSet");
                //oFileUploader.removeAllItems();
                this.pDialog.open();
            }
            debugger;
        },
        onUploadSet: function (oEvent) {
        },
        onTempDownload: function (oEvent) {
        },
        onCloseDialog: function (oEvent) {
            debugger;
            this.pDialog.close();
        },
        onBeforeUploadStart: function (oEvent) {
        },
        onUploadSetComplete: function (oEvent) {
        },
        onItemRemoved: function (oEvent) {
        }
    };
});

我的片段看起来像这样

<core:FragmentDefinition xmlns="sap.m" xmlns:l="sap.ui.layout" xmlns:core="sap.ui.core" xmlns:u="sap.ui.unified" xmlns:upload="sap.m.upload">
    <Dialog id="uploadDialogSet" title="Excel Upload">
        <content>
            <upload:UploadSet uploadEnabled="true" id="uploadSet" items="{path: '/', templateShareable: false}" fileTypes="pdf" maxFileNameLength="200" beforeUploadStarts="onBeforeUploadStart" uploadCompleted="onUploadSetComplete" afterItemRemoved="onItemRemoved"
            terminationEnabled="true">
                <upload:UploadSetItem id="uplSetIt" visibleRemove="true" visibleEdit="false" fileName="{name}" url="/upload">
                    <upload:attributes>
                        <ObjectAttribute id="ObjAttr" title="Uploaded by" text="{user}" active="false"/>
                    </upload:attributes>
                </upload:UploadSetItem>
            </upload:UploadSet>
        </content>
        <buttons>        
            <Button id="BtnTemplate" text="Success" press="onTempDownload" icon="sap-icon://accept" type="Success"/>
            <Button id="BtnUpload" text="Failure" press="onUploadSet" icon="sap-icon://error" type="Reject"/>
            <Button id="BtnClose" press="onCloseDialog" text="Cancel" icon="sap-icon://close-command-field"/>
        </buttons>
        <endButton>
            <Button id="BtnOk" press=".onCloseDialog" text="Ok"/>
        </endButton>    
    </Dialog>
</core:FragmentDefinition>

这通常会打开片段

enter image description here

但是单击“成功/失败/取消”按钮不会触发诸如“成功”/“失败”/“取消”之类的方法。 “关闭对话框”...

我的假设是我没有“正确的控制器”,因为像 this.getView(), ... 这样的方法会导致错误。 因此我尝试了类似的事情

function (Controller, UIComponent, HashChanger, Log) {
        "use strict";

        return Controller.extend("my.custom.service.controller.ExtEquipmentObjectPage", {

但没有成功...

enter image description here

我怎样才能实现触发操作? 有没有什么例子?

我尝试使用

创建不同的控制器

return Controller.extend("my.custom.service.controller.ExtEquipmentObjectPage", {

但是后来我的控制台中出现了一些绑定错误...

sapui5 sap-fiori rap
1个回答
2
投票

好吧, 我为自己找到了解决方案。

对于我的按钮,我声明了一个处理程序

<Button core:require="{ handler: 'my/domain/appName/ext/controller/CustomActionHandler'}" id="BtnSuccess" press="handler.onSuccessClose" text="Success" icon="sap-icon://accept" type="Success"/>

此后我的处理程序的方法被触发

© www.soinside.com 2019 - 2024. All rights reserved.