2016-08-16 3 views
0

私はこの約束は、私がhanatrial webideで実行すると、正常に動作します しかし、私が展開するときにsapui5UsingjQuery.sap.includeScript()。その後、()

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

でGoogleマップを含めるようにしようとしていますそれはそれが動作していない雲のプラットフォームに花です。エラーメッセージがそれは私を与える:

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を開いて、このエラーが発生し、ライブラリ内のコード・フラグメントは、私が生産するHCPポータルサービスを使用するのです

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

ですHCP Fioriランチパッドプラットフォーム。これを修正するには?私は何を間違えたの?

ありがとうございます!

+0

あなたは 'promisifyを渡す必要はありません:true'を、 UI5 – Vadim

+0

では無視されるため、コールバックを使用する必要があります。「APIが準備できたら、コールバックパラメータを使用して指定された関数を呼び出します。 https://developers.google.com/maps/documentation/javascript/tutorial –

+0

参考にしてくださいhttp://jasper07.secondphase.com.au/openui5-googlemaps/ –

答えて

2

実際にInterceptorServiceが発行されています。これは、最初の引数としてオブジェクトを持つincludeScriptの構文をサポートしていません。

実装チームにソリューションのコードをHCP Portal Serviceに転送しました。これは次のリリースで修正される予定です。

これまでのところ、あなたは次の回避策と同じ機能を実現することができます

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

こんにちはVadim、素晴らしい答え!なぜ、 'InterceptorService'が 'includeScript'に影響を与えるのか、もっと詳しく説明できますか?私はこれらの機能を解決するのに効果があるのはbroswerだと思った。いかなる助けや材料も歓迎されます。 – Tina

1

InterceptServiceはjQuery.sap.includeScriptの最新シグネチャをサポートしていないようです(パラメータは個々の引数ではなく設定オブジェクトで提供されます)。

中間期、InterceptServiceを強化/修正する必要があります。短期的には、古い署名jQuery.sap.includeScript(url, id, onload, onerror)に戻ってしまうかもしれません。残念ながら、古いシグネチャでPromiseを取得する方法はありません。