2016-08-16 6 views
0

Я пытаюсь включить GoogleMaps в sapui5UsingjQuery.sap.includeScript(). Затем() в HCP Firori Launchpad

jQuery.sap.includeScript({ 
       url: "https://maps.googleapis.com/maps/api/js?key=XXXX", 
       promisify: true 
      }).then(function() { ... }) 

Это обещание отлично работает, когда я бегу в hanatrial webide, Но когда я раскрываю это для облачной платформы hana, это не работает. Сообщение об ошибке дает мне это:

InterceptService.js:1 Uncaught (in promise) TypeError: u.indexOf is not a function(…) sap.ushell.cloudServices.interceptor.InterceptService._invokeFilters @ InterceptService.js:1

jQuery.sap.includeScript @ InterceptService.js:1

onAfterRendering @ Worklist.controller.js:37

Так я открываю InterceptService.js, фрагмент кода в библиотеке, который произвел эту ошибку

{if(u.indexOf('/sap/fiori/../../')>0){u=u.replace('/sap/fiori/../../','/');} 

Я использую HCP Portal Service производить HCP Fiori Launchpad Platform. Как это исправить? Что я сделал не так?

Большое спасибо!

+0

Вам не нужно передать 'promisify: true', поскольку он проигнорирован UI5 – Vadim

+0

, вам все равно придется использовать обратный вызов «Когда API будет готов, он вызовет функцию, указанную с помощью параметра обратного вызова». https://developers.google.com/maps/documentation/javascript/tutorial –

+0

FYI может порекомендовать http://jasper07.secondphase.com.au/openui5-googlemaps/ –

ответ

2

Это действительно вопрос InterceptorService, который не поддерживает синтаксис includeScript с объектом в качестве первого аргумента.

Я отправил код решения команде внедрения Служба HCP Portal, и она будет исправлена ​​в следующем выпуске.

До сих пор, вы можете достичь того же функциональность со следующими обходного:

new Promise(function(fnResolve, fnReject) { 
    jQuery.sap.includeScript(
     "https://maps.googleapis.com/maps/api/js?key=XXXX", 
     "mapsScriptId", fnResolve, fnReject 
    ); 
}).then(function() { ... }) 

Посмотрите, как UI5 реализует его:https://github.com/SAP/openui5/blob/rel-1.38/src/sap.ui.core/src/jquery.sap.global.js#L4387-L4389

+0

Привет Вадим, удивительный ответ! Не могли бы вы объяснить, почему «InterceptorService» повлияет на «includeScript»? Я думал, что на решение этих функций влияет только броузер. Любая помощь или материал приветствуются. – Tina

1

Похоже, что InterceptService не поддерживает самую новую подпись jQuery.sap.includeScript (где параметры предоставлены в объекте конфигурации, а не как отдельные аргументы).

Средство InterceptService должно быть улучшено/исправлено. В краткосрочной перспективе вы можете вернуться к старой подписи jQuery.sap.includeScript(url, id, onload, onerror). К сожалению, нет способа получить обещание со старой подписью.