[英]Angularjs: share data between pages
我需要在两个不同的页面(login.html和index.html)之间共享数据。 我将服务定义如下:
.service('loginData', function LoginData(){
var userData = '';
this.addUser = function(name){
this.userData = name;
//return userData.user;
}
this.loggedUser = function(){
return this.userData;
}
})
为login.html定义的控制器:
.controller('loginCtrl',['$scope', '$http', '$window', 'loginData', function($scope, $http, $window, loginData){
$scope.btnsubmit = function(username,password){
//scope.user = data_to_send;
var doc = [];
$http.post('http://127.0.0.1:3000/authenticate',{user: username, pwd: password} )
.success(function(response)
{
console.log('1 : ' + response);
if (response != null){
console.log('2 : ' + angular.fromJson(response).user);
doc = angular.fromJson(response);
loginData.addUser(doc[0].user);
console.log(doc[0].user);
// if I call loginData.LoggedUser here -> it works
}
}).error(function()
{
console.log('error')
});
$window.location.href = 'index.html';
}
}])
为index.html定义的控制器
.controller('profileCtrl', function(loginData){
console.log(loginData.loggedUser());
})
如果我在登录控制器中调用函数loginData.loggedUser,它会很好地工作。 另一方面,从索引控制器调用相同的函数将返回未定义。 我该如何解决? 谢谢!
服务是成角度的单例,因此,首先,我建议您检查loginData
实例。 第二步,如果所有实例都正确,则可以检查运行顺序。 第二个控制器最有可能在获取值之前进行初始化,以及未定义未分配默认值的原因var userData = '';
这是一个局部变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.