omponente @Angularjs 1.5 modal com função de retorno de chamada que é chamada várias vezes pelo objeto incorporado no IE11 que não atualiza a ligação Angular

No IE 11, eu tenho um componente modal Angularjs 1.5 como abaixo. O modal abre e, no evento de renderização, ele chama uma função fora do aplicativo angular com uma função de retorno de chamada contida neste componente. Essa função externa inicia um processo de instalação que inicia um objeto incorporado, como mostrado abaixo, e que periodicamente chama a função de retorno de chamad

O problema que estou tendo é que a ligação não está sendo atualizada no modelo em cada função de retorno de chamada chamada na chamada de objeto incorporado. O console.log é executado e posso ver a mensagem no console. A ligação é inicialmente atualizada com 'processo inicial', portanto, a ligação está correta

<span ng-bind="$ctrl.messages[$ctrl.messages.length - 1]"></span>

Tentei chamar scope.apply como abaixo, mas nada acontece. Somente quando o processo de iniciação é concluído, a ligação é atualizada com a última mensagem mostrada na chamada de retorno de chamada final. Portanto, a função initiateprocess está bloqueando a ligação, mas não a @ do console.lo

é a maneira correta de lidar com vários retornos de chamada e atualizar ligações

  angular.module('components')
  .component('testModal', {
    bindings:{
      modalInstance: '<',
      resolve: '=',
      dismiss: '&',
      close: '&'
    },
    controller: TestController,
    templateUrl: 'scripts/components/TestModal.html'
});

TestController.$inject = ['$scope'];
function TestController($scope) {
  var ctrl = this;

  ctrl.$onInit = function(){
    ctrl.messages = [];
    ctrl.messages.push('starting process');
  };

  ctrl.modalInstance.rendered.then(function(){
    CallVanillaJSFunction(callback); 
  });

  function callback(message){
    ctrl.messages.push(message);
    console.log(ctrl.messages[ctrl.messages.length - 1]);
    CheckScopeBeforeApply();
  }

  function CheckScopeBeforeApply() {
    if(!$scope.$phase) {
      $scope.$apply();
      console.log('scope applied');
    }
  };

}

unção @Vanilla

var globalCallback;

function CallVanillaJSFunction(callback){
    globalCallback = callback;
    var complete = initiateprocess();
    globalCallback(complete);
}

bjeto incorporado

<OBJECT ID="testObj" CLASS......
<SCRIPT language=javascript for=testObj event="OnEvent(message);">
      if(navigator.userAgent.indexOf("Trident") != -1)
      {
         globalCallback(message);
      }
    </SCRIPT>

Esta pergunta foi marcada como duplicada, mas, tendo analisado as duplicatas, não acho que seja a mesma. A função de retorno de chamada global pode ser chamada várias vezes e o aplicativo angular não sabe quantas vezes será chamad

questionAnswers(1)

yourAnswerToTheQuestion