Ho definito un servizio chiamato NameService
nel mio controller.js
. Voglio utilizzare la variabile presente nello NameService
in due controller diversi.Aggiornamento di una variabile di servizio in un controller e utilizzo del valore aggiornato in un altro controller - Angular JS
Il mio servizio è la seguente
App.service('NameService', function(){
this.Name = "";
this.getName = function(){
return this.Name;
};
this.setName = function(name){
this.Name = name;
}
});
Ho un regolatore di nome netController
in cui sto aggiornando il valore della Name
variabile presente nel mio Nameservice
. Voglio utilizzare il valore aggiornato nel mio page1Controller
.
NetController
è la seguente:
App.controller('netController', ['$scope','$http','$window','NameService', function($scope,$http,$window,NameService)
{
$scope.initNet = function()
{
$http.post('/initNet',$scope.network).success(function(response)
{
if(response.status == "true")
{
$scope.$watch('NameService.setName()', function(){
NameService.Name = $scope.network.name;
});
NameService.setName($scope.network.name);
$window.location.href = '/page1';
}
else
{
$scope.error = "Error!";
}
});
}
}]);
Se faccio console.log(NameService.netName);
nel mio netController
la fase di stampa il valore aggiornato.
page1Controller
è la seguente
App.controller('page1Controller', ['$scope', '$http','NameService', function($scope, $http,NameService)
{
console.log(NameService.Name);
}]);
Quando è fare console.log(NameService.name);
nel mio page1Controller
sta dando stringa vuota.
Qualcuno può aiutarmi a risolvere questo problema?
Hai la funzione NameService.getName() per ottenere il nome. Eppure su un posto si usa NameService.netName per ottenerlo e sull'altro posto si usa NameService.name? Perché non utilizzare NameService.getName() in entrambe le posizioni? –
Ho apportato modifiche al codice! Ancora lo stesso errore. – Minions
@Minions Quando viene attivato il controllo di pagina1 in relazione a netController? A causa della chiamata $ http potrebbe essere solo un problema di temporizzazione di quando stai cercando di recuperare il valore. Inoltre, usa sicuramente Factory invece di Service in modo da poter incapsulare correttamente il campo del nome. Altrimenti qualcun altro può facilmente sovrascrivere il valore della variabile di supporto senza nemmeno dover usare il metodo Set() –