Comment «redémarrer» l'application angularjs
Dans mon application AngularJS j'ai un service qui est basé sur WebSocket. Si la connexion WebSocket pauses, je veux pleinement "redémarrer" l'application (aller à la page par défaut de $route, recréer le service, etc.). Est réalisable? Voilà comment j'ai commencé, mais à partir de ce moment la, je n'ai aucune idée de comment procéder:
Module:
(function () {
angular.module('mainModule', ['ngRoute'])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider.
when('/home', {
templateUrl: 'partials/home.html',
controller: 'appController'
}).
when('/register', {
templateUrl: 'partials/register.html',
controller: 'appController'
}).
otherwise({
redirectTo: '/home'
});
}]);
}());
Service:
(function () {
var app = angular.module('mainModule');
app.service('$wsService', ['$q', '$window', function ($q, $window) {
$window.console.log("WebSocket SERVICE: started");
var self = this;
var ws = new WebSocket("ws://127.0.0.1:9090");
this.isConnected = function (m) {};
ws.onopen = function () {
$window.console.log("WebSocket SERVICE: connected");
self.isConnected(true);
};
ws.onmessage = function (m) {
//do whatever I want to do
};
ws.onerror = function () {
$window.console.log("WebSocket SERVICE: disconnected");
self.isConnected(false);
};
}]);
}());
Contrôleur:
(function () {
var app = angular.module('mainModule');
app.controller('appController', ['$route', '$scope', '$wsService', function ($route, $scope, $wsService) {
$wsService.isConnected = function (m) {
//restart logic
};
}]);
}());
De sorte que mon "redémarrer la logique" j'ai essayé "$route.reload();" mais comme vous le savez déjà, il ne fait pas ce dont j'ai besoin. Finalement je vais avoir un message d'avertissement pop-up (bootstrap modal) informant l'utilisateur que la connexion a été perdue, et sur un bouton, cliquez sur dans le modal, il va recharger l'application et allez dans /home. Je ne demande pas comment faire, popup, etc comme c'est déjà fait. Comme pour l'instant, cependant, j'ai besoin de comprendre, juste de la logique pour un total de rechargement de l'application. Des idées? Merci.
source d'informationauteur Daniel Gruszczyk
Vous devez vous connecter pour publier un commentaire.
Pour répondre à ma propre question, réalisée avec un essai et erreur:
Cela va aller pour le /home (par défaut) et de le recharger à tout, donc la création d'un nouveau service, module, contrôleurs, etc. Si il ya une meilleure façon de le faire (si je change de chemin d'accès par défaut à /bla dans mon module, ce ne sera pas le ramasser et donc je vais avoir à modifier ce code aussi), faites le moi savoir 🙂
J'ai réalisé la même chose à faire:
Une petite astuce que j'ai fait pour votre réponse qui m'a beaucoup aidé avec l'INTERFACE utilisateur rafraîchissant. Est de faire le chemin du changement à l'intérieur de la recharger succès de rappel:
$window.location.reload().then(
function success(){
$location.path('/home');
},
function error(error) {}
);
La plupart du temps, il donne une transition en douceur, en supposant que vous êtes le redémarrage de tout rediriger vers une autre page.