AngularJS, переустановить (обновить страницу) на внешнем событии - PullRequest
0 голосов
/ 29 октября 2018

У меня есть мобильное приложение angularjs, после открытия загружаемых сообщений страницы чата:

myApp.controller('ChatControllerGlobal',function($scope,global) {
    $http({
      method: 'POST',
      url: serverURL+'&act=get_chat',
      withCredentials: true,
    }).then(function successCallback(data) {
        $scope.messages = data.data;
        $scope.loader = false;
        $scope.content = true;
      });

});

и теперь по внешнему событию мне нужно каким-то образом переустановить контроллер (загрузить новые сообщения):

window.FirebasePlugin.onNotificationOpen(function(data) {
    // some code here to reload new chat messages
});

Есть ли какой-нибудь грязный способ переустановить контроллер или вызвать функцию контроллера?

1 Ответ

0 голосов
/ 29 октября 2018

Вы можете создать инъекционный сервис из вашего плагина Firebase. Затем внедрите эту службу в свой контроллер и вызовите функцию, которая получает ваши сообщения:

myApp
  .factory('firebase', function ($window) {
      return $window.FirebasePlugin;
  });

myApp.controller('ChatControllerGlobal', function ($scope, $http, firebase) {
  getMessages();

  firebase.onNotificationOpen(function (data) {
    getMessages();
  });

  function getMessages() {
    $http({
      method: 'POST',
      url: serverURL + '&act=get_chat',
      withCredentials: true,
    }).then(function successCallback(data) {
      $scope.messages = data.data;
      $scope.loader = false;
      $scope.content = true;
    });
  }
});

Таким образом, вы можете издеваться над сервисом firebase в модульных тестах.

...