Angularjs $ rootScope. $ On () функция обратного вызова работает только один раз - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть angularjs Служба и в процессе обслуживания получить запрос на один раз. и я использую ответ в каком-то контроллере.

Я использую $rootScope для проверки извлечения данных следующим образом. Проблема в функции обратного вызова $rooScope.$on(), она работает только один раз, когда я изменил root, и функция обратного вызова контроллера не работает, пока я не обновлю sh страницу.

Сервис.

app.factory('$init', function ($rootScope,$rest) {

  var service = {

  };

  var response = null;

  service.onCreate = function (callback) {
      if(response != null) {
          callback();
      } 
      else {
          $rest.get('app/init', {}, function (responseInit) { 
              response = JSON.clone(responseInit);
              callback();
          });
      }
  };

  service.response = function () {
      return response;
  }   

  service.init = function () {
      service.onCreate(function() {
          console.log('broadCast');
          $rootScope.$broadcast('$init.onSuccess');
      });
  };

  service.init();

  return service;
});

Первый контроллер.

 app.controller('firstController', function ($scope, $init, $rootScope) {

   $scope.init = $init;
   $scope.initData = function () {
       $rootScope.$on('$init.onSuccess', function () {
           var response = $scope.welcomeInit;
           $scope.response = response.response();
       });
   };
   $scope.initData();
 });

Второй контроллер.

 app.controller('SecondController', function ($scope, $init, $rootScope) {
   $scope.init = $init;
   $scope.initData = function () {
       $rootScope.$on('$init.onSuccess', function () {
           var response = $scope.welcomeInit;
           $scope.response = response.response();
       });
   };
   $scope.initData();
});
...