Ich habe einen Service namens in meinem controller.js
definiert. Ich möchte die Variable, die in der vorhanden ist, in zwei verschiedenen Controllern verwenden.Aktualisieren einer Service-Variable in einem Controller und Verwenden des aktualisierten Werts in einem anderen Controller - Angular JS
Mein Service ist wie folgt
App.service('NameService', function(){
this.Name = "";
this.getName = function(){
return this.Name;
};
this.setName = function(name){
this.Name = name;
}
});
Ich habe einen Controller netController
, in dem Namen ich in meinem Nameservice
den Wert der Name
Variable vorhanden bin zu aktualisieren. Ich möchte den aktualisierten Wert in meinem page1Controller
verwenden.
NetController
ist wie folgt:
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!";
}
});
}
}]);
Wenn ich console.log(NameService.netName);
tun in meinem netController
es druckt den aktualisierten Wert.
page1Controller
ist als
App.controller('page1Controller', ['$scope', '$http','NameService', function($scope, $http,NameService)
{
console.log(NameService.Name);
}]);
folgt Wann console.log(NameService.name);
in meinem ist page1Controller
es gibt leere Zeichenfolge.
Kann mir bitte jemand helfen, dies zu beheben?
Sie haben die Funktion NameService.getName(), um den Namen zu erhalten. Aber an einem Ort verwenden Sie NameService.netName, um es zu bekommen, und an der anderen Stelle verwenden Sie NameService.name? Warum nicht NameService.getName() an beiden Stellen verwenden? –
Ich habe Änderungen am Code vorgenommen! Immer noch der gleiche Fehler. – Minions
@Minions Wann wird page1Controller in Bezug auf netController instanziiert? Aufgrund des $ http-Aufrufs könnte es sich nur um ein Zeitproblem handeln, wenn Sie versuchen, den Wert abzurufen. Verwenden Sie unbedingt Factory anstelle von Service, damit Sie das Namensfeld ordnungsgemäß einkapseln können. Sonst kann jemand anderes den Wert der Unterstützungsvariable leicht überschreiben, ohne die Methode Set() zu verwenden. –