2017-02-06 4 views
2

У меня есть некоторые приложения SAPUI5 на одном сервере SAP. Все приложения будут развернуты на сервере ERP версии 6.0.Контроллер доступа другого приложения в SAPUI5

Все приложения имеют URL-адрес доступа на нашем сервере ERP, который можно получить через SAP NetWeaver. Все URL-адреса имеют формат commonPart/applicationName/index.html. Все эти приложения будут доступны через приложение панели управления Fiori.

Теперь у меня есть контроллер, который должен использоваться всеми моими приложениями. Есть ли какой-нибудь метод, с которым я могу поделиться этим контроллером без копирования и прошлых лет?

Заранее спасибо

ответ

0

Вы можете создать проект библиотеки многократного использования для приложений SAP Fiori. Поместите свой BaseController в эту библиотеку. Затем импортируйте библиотеку в проект приложения и расширьте контроллер приложений из BaseController.

Определение library.js в корневой папке базового проекта

sap.ui.define(["jquery.sap.global", 
      "sap/ui/core/library"], // library dependency 
function(jQuery) { 

    "use strict"; 
    // delegate further initialization of this library to the Core 
    sap.ui.getCore().initLibrary({ 
     name: "mylibrary.reuse", 
     version: "1.0", 
     dependencies: ["sap.ui.core"], 
     types: [], 
     interfaces: [], 
     controls: [], 
     elements: [], 
     noLibraryCSS: true 
    }); 

    return mylibrary.reuse; 

}, /* bExport= */ true); 

Объявите BaseController в это JS файл

jQuery.sap.declare("mylibrary.reuse.BaseController"); 
/** Controller Definition **/ 

Определения и разоблачить точки входа в библиотеку в нео-app.json

{ 
    "routes": [{ 
    "path": "/resources/mylibrary/reuse", 
    "target": { 
     "type": "application", 
     "name": "myreuselibrary", 
     "entryPath": "/mylibrary/reuse" 
    }, 
    "description": "SAPUI5 Resources" 
}, 

}

Затем импортируйте вышеуказанную библиотеку в проект приложения, сделайте JQuery.require(), получив BaseController, а затем продолжите его.

Надеюсь, это поможет.

+1

Вы сказали: «Объявите BaseController в его JS-файле» Что означает «это»? Мы должны определить BaseController в чем? –

+1

Также неясно, какова связь между BaseController и библиотекой.js, если они определены в одном проекте? –

0

Вы могли бы сделать BaseController, который имеет все функции, которые вы хотите оба контроллера, чтобы иметь, и поместить этот файл JS в общей папке/общественности. Затем вы можете расширить этот контроллер из обоих приложений.

+0

Я сделал это, но тогда я не могу получить доступ к файлу из-за перекрестных ссылок ошибки в браузере. –

+0

Только один подход, который может работать, но я не знаю, что нужно, можно развернуть тему и получить доступ к ней при начальной загрузке. что было объяснено здесь https://help.hana.ondemand.com/theme_designer/frameset.htm?706af4ea51ed4c07b5b9159bf7df6471.html Если бы мы могли сделать то же самое для файла js, это мир будет очень приятным. –

+0

Если вы размещаете общий файл на том же сервере, я думаю, вам не нужно запускать ошибки XSS и тому подобное. Возможно, вам потребуется релаксация домена для создания совпадающих доменов/истоков, поскольку они могут незначительно отличаться. Какую точную ошибку вы получаете? –

0

вы можете просто ввести в следующем

sap.ui.controller([your namespace].[controller folder name].[controller name]).[your method name]([parameters you want to pass])

, например

sap.ui.controller(CafApp.controller.create).onCreate(url);

Смежные вопросы