我在项目中使用angular,在用户登录后,他的数据被保存到数据库中,并且可以传递给主应用程序。 但是我需要使用他的名字来显示他的命令,所以我可以在登录时提取他的名字,但是当我想在另一个函数中使用这个名字时,我得到:'undefined'......?
AngularJS
$scope.redirectafterLogin = function($username)
{
$rootScope.username = $username;
window.location = "index1.html";
}
//SHOW ORDER FOR LOGGED IN CUSTOMER
$scope.orderCustomer = function (){
$http.get('/api/getorderS/'+$rootScope.username).then(function (results)
{
...
}
那么如何在orderCustomer函数中访问$rootScope.username
变量?
答案 0 :(得分:0)
您可以在服务中保存用户名。在进行完全刷新时,$ scope或$ rootScope会被禁用,因为当您'实例化'控制器时会创建一个作用域,当您刷新页面时,控制器会被重新实例化,因此范围也会受到影响。因此,要创建您的服务,请执行以下操作:
app.factory('userService', [function() {
return {
userName: null
}
}])
然后在你的控制器中:
app.controller('loginCtrl', ['userService', function(userService) {
$scope.redirectafterLogin = function($username)
{
userService.userName = $username;
window.location = "index1.html";
}
$scope.orderCustomer = function (){
$http.get('/api/getorderS/'+ userService.userName).then(function (results)
{
...
}
你可以制作一个getter和setter来美化上面的代码,只需添加:
setUserName: function(user) {
this.userName = user;
},
getUserName: function() {
return this.userName;
}
到您的服务,然后将+ userService.username
替换为+ userService.getUserName()
修改强> 另请注意:确保在'index1.html'中使用ng-controller =“loginCtrl”!