Виджет JavaScript должен ждать значения переменной AngularJS - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть некоторые проблемы с интеграцией внешних виджетов на платформе AngularJS:

<div id="some_widget" param="{{value}}"></div>
<script src="/widget.js"></script>

Виджет при первом выполнении видит param = "{{value}}" как строку.Использование тайм-аута решило бы проблему, но это не элегантно.Использование ng-if так:

<script ng-if="value" src="/widget.js"></script>

также не работает.Есть идеи?

1 Ответ

0 голосов
/ 08 декабря 2018

Вы можете использовать часы внутри контроллера представления (после внедрения $ scope), чтобы проверить, когда «значение» не является неопределенным (или true, зависит от случаев).После проверки вы можете динамически вставить скрипт тега в документ и загрузить widget.js.Код выглядит так:

var app = angular.module('awesomeApp', []);
app.controller('awesomeController', function($scope){
    $scope.$watch('value',function(newValue, oldValue) {
        if(newValue != undefined) {
          // load script dynamically using any method
          var awesome_script = document.createElement('script');
          awesome_script.setAttribute('src','/widget.js');
          document.head.appendChild(awesome_script);
        }
    });
});
<html>
  <head>
    <!-- import the awesomeController.js file -->
  </head>
  <body ng-app="awesomeApp">
    <div  ng-controller="awesomeController">
      <div id="some_widget" param="{{value}}">
      </div>
    </div>
  </body>
</html>

Надеюсь, это поможет.

...