Buduję niestandardową wizualizację Power BI, więc mam dostęp do pliku javascript, który jest zużywany przez platformę. Nie mam dostępu do żadnego znacznika, tylko element, który jest wstrzykiwany, gdzie mam zamontować moją wizualizację.Odwołanie nie jest wywoływane
Próbuję zamontować Bing mapy, dokumentacja wyglądać następująco:
<div id='myMap' style='width: 100vw; height: 100vh;'></div>
<script type='text/javascript'>
var map;
function loadMapScenario() {
map = new Microsoft.Maps.Map(document.getElementById('myMap'), {});
}
</script>
<script type='text/javascript' src='https://www.bing.com/api/maps/mapcontrol?key=YourBingMapsKey&callback=loadMapScenario' async defer></script>
URL do skryptu ma param callback
ciągu kwerendy, która zawiera nazwę funkcji powołania.
Biorąc pod uwagę, że nie mam dostępu do znaczników, staram się robić wszystko dynamicznie w moim konstruktorze wizualizacji. Tworzę funkcję, przenoszę ją do zakresu globalnego, a następnie dodaję zmienną kwarystringową, aby ją odnieść, ale nigdy nie zostanie ona wywołana. Czy widzisz coś, czego może mi brakować?
constructor(options: VisualConstructorOptions) {
this.host = options.host;
this.elem = options.element;
const self = this;
function moveMethodsIntoGlobalScope(functionName){
var parts = functionName.toString().split('\n');
eval.call(window, parts.splice(1, parts.length - 2).join(''));
}
function methodsToPutInGlobalScope(){
function loadMapScenario(){
console.log("finally called loadMapScenario");
}
}
const script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
console.log(loadMapScenario === undefined); // false, definitely in global scope
script.src = 'https://www.bing.com/api/maps/mapcontrol?key=xxxxxxxxxx&callback=loadMapScenario';
document.getElementsByTagName('head')[0].appendChild(script);