Использование D3js на внешне загруженной странице на сайте AngularJS - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть веб-сайт, который использует AngularJS в качестве своей платформы.У меня нет полного доступа к фреймворку, однако я могу добавить пользовательские страницы, которые загружаются и отображаются в фреймворке.

Внешне у меня есть страница, которая динамически отображает данные графически с помощью D3js (и другихбиблиотеки).Я могу вызвать эту страницу с других сайтов, используя AJAX, и она загружается и отображается нормально.Всякий раз, когда я загружаю его из этого сайта AngularJS, кажется, что все загружается, но по какой-то причине функция 'd3' не может быть найдена.

Я пытался загрузить страницу через jQuery, AngularJS <ng-include>, но всегдаполучить тот же результат.Я попытался загрузить библиотеки D3 с помощью require.js, тегов <script src=> и даже вставить весь исходный код D3 на страницу безуспешно.

Я предполагаю, что это связано с каким-тостранной проблемы с областями видимости, но другие библиотеки загружаются и работают просто отлично.Есть ли другой способ создать экземпляр d3, кроме загрузки библиотеки и просто вызова d3.foo?Делает ли d3 что-то странное с его инициализацией, которая противоречит AngularJS?

Я абсолютный новичок, когда дело доходит до AngularJS, так что ...

Вот пример того, что я пробовал:

    <div data-title="Workplace Readiness"
     class="external-page">

    <p>
       ...
       some explanatory stuff
       ...
    </p>

    <div id="WR">Loading...</div>

    <script src="https://https://d3js.org/d3.v4.min.js"></script>
    <script src="https://source.of.custom.code/guage1.js"></script>
    <script type="text/javascript">
        $.get('https://source.of.custom.code/workplace_readiness/', function(data){
            $('#WR').html(data);
        });
    </script>
</div>

Страница workplace_readiness также содержит необходимые библиотеки в своем источнике, которых достаточно везде, но не на этом сайте AngularJS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...