Ho una app angolare e vorrei aggiungere un processo in background che gira senza alcuna vista. Tutto ciò che sta facendo è chiamare regolarmente un webservice e fare qualcosa al riguardo, senza interfaccia utente.
Un modo veloce e sporco è semplicemente inserire il codicein window.onLoad. Ma dovrei pensare a fare questo il modo angolare? In tal caso, inserisco il codice in un servizio? Come potrei "iniziare" inizialmente questo servizio?
risposte:
1 per risposta № 1Hai risposto tu stesso, il servizio è la scelta giusta, puoi iniettarlo in qualsiasi controller che hai in app, se non è così e non hai un controller (o una direttiva), puoi farlo in angular.run
angular.module("lookMaMyModule").run(function(injectables){
do something fancy on run
})
1 per risposta № 2
Ecco un semplice concetto per te, potrebbe avere piccoli problemi, ma ti verrà un'idea.
angular.bootstrap2 = function(module, element, callback){
angular.bootstrap(module, element);
callback();
}
rimuovere il tag ng-app da html e l'app bootstrap
Se il processo in background è un modulo, quindi utilizzare angular.module("name").run();
altrimenti usare la tecnica di bootstrap automatico
app.js
angular.module("name", ["deps"]);
angular.bootstrap2(["name"], document.body, function(){
var process_1 = new MyServ();
process_1.start();
});
service.js
var MyServ = function(){
this.intervalId = 0;
this.start = function(){
this.intervalId = setInterval(function(){
console.log("executing");
}, 1000);
}
this.stop = function(){
setInterval.cancel(this.intervalId); //don"t remember api, sorry :<
}
});
0 per risposta № 3
Penso che quello che stai cercando sia
app.run()
questo viene chiamato quando l'app angolare inizia
vedere https://docs.angularjs.org/api/ng/type/angular.Module