Оберните переменные google-closure-library для углового проекта - PullRequest
0 голосов
/ 18 мая 2018

Итак, исходя из этого вопроса

Теперь у меня есть модуль как в bower, так и в npm, я могу нормально импортировать его в свой проект и объявить его в app.module, дажепопытайтесь использовать его в моем контроллере:

index.html:

<script src="bower_components/google-closure-library/closure/goog/base.js"></script>

app.module.js:

angular
        .module('drugQualityDataManagerApp', [
            'ngStorage',
            'ngResource',
            'ngCookies',
            'ngAria',
            'web-gl-earth2',

uploadData.controller.js:

$scope.initializeMapWebGL = function(){
                var earth = new webGlEarth.map('earth_div');
                webGlEarth.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(earth);

                var marker = webGlEarth.marker([51.5, -0.09]).addTo(earth);
                marker.bindPopup("<b>Hello world!</b><br>I am a popup.<br /><span style='font-size:10px;color:#999'>Tip: Another popup is hidden in Cairo..</span>", {maxWidth: 150, closeButton: true}).openPopup();

                var marker2 = webGlEarth.marker([30.058056, 31.228889]).addTo(earth);
                marker2.bindPopup("<b>Cairo</b><br>Yay, you found me!", {maxWidth: 120, closeButton: false});

                var markerCustom = webGlEarth.marker([50, -9], '/img/logo-webglearth-white-100.png', 100, 24).addTo(earth);

                earth.setView([51.505, 0], 6);
            };

uploadData.html:

<style>
    html, body{padding: 0; margin: 0; background-color: black;}
    #earth_div{top: 0; right: 0; bottom: 0; left: 0; position: absolute !important;}
</style>
<title>WebGL Earth API: Markers</title>
<body onload="initialize()">
<div id="earth_div"></div>
</body>

Но, конечно, это не будет так просто, проблема возникает из-за зависимостей webglearth2, это приложение сильно зависит отgoogle-closure-library, и angular это не нравится, я попытался обернуть файл main.js следующим образом:

(function () {
    'use strict';
    angular.module('web-gl-earth2', []).provider('webGlEarth');

Я добавил google-closure-library в мои bower_components и в app.module.js, но я все еще боюсь:

Uncaught ReferenceError: goog is not defined

Итак, у меня остается вопрос: есть ли автоматическая обертка, которая поможет мне интегрировать этот модуль в угловой, или я обречен?переписать весь исходный код, чтобы сделать его «угловатым»?

...