У меня проблема в SAP WebIDE для отображения службы ODS XS в приложении UI5 - PullRequest
2 голосов
/ 29 апреля 2019

Я создаю приложение для отображения результатов рекомендаций для приложений для пользователей, но не могу отобразить его в приложении.

Ошибка показывает Свойство отображения не определено в моем файле базового контроллера

Код ошибки: getOwnerComponent ("myComp"). GetTargets (). Display (to) находится в файле appview.controller.js (файл контроллера)

ПРИМЕЧАНИЕ: если я использую метод 1 для контейнера компонента, я могу инициализировать маршрутизатор, но ошибка не определена, поскольку идентификатор компонента не найден.

Однако, если я использую метод 2 для контейнера компонента, я могу получить getOwnerComponent, но отображать неопределенное значение, так как не могу инициализировать маршрутизатор.

Есть идеи?

appview.controller.js

 handlePressOpenMenu: function(oEvent) {
      var oButton = oEvent.getSource();
      // create menu only once
      if (!this._menu) {
        this._menu = sap.ui.xmlfragment("apps.html.fragment.view_menu", this);
        this.getView().addDependent(this._menu);
      }
      var eDock = sap.ui.core.Popup.Dock;
      this._menu.open(this._bKeyboard, oButton, eDock.BeginTop, eDock.BeginBottom, oButton);
    },
    handleMenuItemPress: function(oEvent) {
      if (oEvent.getParameter("item").getSubmenu()) {
        return;
      }
      var to = oEvent.getParameter("item").data("to");
      if (to) {
        this.getOwnerComponent("myComp").getTargets().display(to);
      }

    },

manifest.json

"routing": {
            "config": {
                "routerClass": "sap.m.routing.Router",
                "viewType": "XML",
                "async": true,
                "viewPath": "apps.html",
                "controlAggregation": "pages",
                "controlId": "idAppControl",
                "transition": "slide"
            },
            "routes": [{
                "name": "appview",
                "pattern": "",
                "target": ["appview"]
            }],
            "targets": {
                "appview": {
                   "clearAggregation": true,
                    "viewName": "appview"
                },
                 "xsodata.collaborative": {
                  "clearAggregation": true,
                  "viewName": "xsodata.collaborative"
                },
                 "xsodata.contentbased": {
                  "clearAggregation": true,
                  "viewName": "xsodata.contentbased"
                },
                "xsjs.apl_recommendation": {
                  "clearAggregation": true,
                  "viewName": "xsjs.apl_recommendation"
                },
                   "xsjs.pal_apriori": {
                  "clearAggregation": true,
                  "viewName": "xsjs.pal_apriori"

                }
}
}
}
}
}

component.js

    return UIComponent.extend("apps.html.Component", {

        metadata: {
            manifest: "json"
        },

        /**
         * The component is initialized by UI5 automatically during the startup of the app and calls the init method once.
         * @public
         * @override
         */
        init: function () {
            // call the base component's init function
            sap.ui.core.UIComponent.prototype.init.apply(this, arguments);


            // set the device model
            this.setModel(models.createDeviceModel(), "device");

            // initialise router
             this.getRouter().initialise();




        }
    });
});

index.html Метод 1

sap.ui.getCore().attachInit(function() {

                new sap.m.Shell({

                    app: new sap.ui.core.ComponentContainer({
                        id:"myComp",
                        height : "100%",
                        name : "movielens.html",
                        propagateModel:true
                    }).placeAt("content")
                });

index html Метод 2

sap.ui.getCore().attachInit(function() {
                var oComp =  sap.ui.getCore().createComponent({
                        name:"apps.html",
                        id:"myComp",
                        height:"100%",
                        propagateModel:true
                    });
                new sap.m.Shell({

                    app: new sap.ui.core.ComponentContainer({
                    component:oComp
                    }).placeAt("content")
                });

Предполагается, что ожидаемый результат будет отображать рекомендации, основанные на выборе пользователя.

...