controller.js
にNameService
というサービスを定義しました。私は2つの異なるコントローラのNameService
にある変数を使用したいと思います。あるコントローラーでサービス変数を更新し、別のコントローラーで更新された値を使用する - 角度付きJS
App.service('NameService', function(){
this.Name = "";
this.getName = function(){
return this.Name;
};
this.setName = function(name){
this.Name = name;
}
});
を次のように
私のサービスは、私は私が私のNameservice
でName
変数現在の値を更新していたにnetController
という名前のコントローラを持っています。私はpage1Controller
に更新された値を使用したいと思います。
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!";
}
});
}
}]);
を私は私のnetController
それが印刷されて更新された値でconsole.log(NameService.netName);
を行う場合は、次のよう
NetController
です。私page1Controller
それは空の文字列を与えているにconsole.log(NameService.name);
を行うれ
App.controller('page1Controller', ['$scope', '$http','NameService', function($scope, $http,NameService)
{
console.log(NameService.Name);
}]);
を次のように
page1Controller
です。
誰かがこれを修正するのに手伝ってもらえますか?
名前を取得するためのNameService.getName()関数があります。しかし、1つの場所でNameService.netNameを使用して取得し、別の場所でNameService.nameを使用しますか?両方の場所でNameService.getName()を使用してみませんか? –
私はコードを変更しました!それでも同じエラー。 – Minions
@Minions pageControllerはいつnetControllerに対してインスタンス化されますか? $ http呼び出しのために、値を取得しようとしているときのタイミングの問題かもしれません。また、Serviceの代わりにFactoryを使用して、名前フィールドを適切にカプセル化できるようにしてください。それ以外の人はSet()メソッドを使用する必要もなく、バッキング変数の値を簡単に上書きすることができます –