AngularJS: 在控制器之间传递变量
AngularJS: Passing variables between controllers
我是 angular 的新手,我正在尝试寻找一种在控制器之间传递变量的方法。我看到实现此目的的最佳方法是使用服务,如下所示 -
AngularJS: How can I pass variables between controllers?
但是,这似乎不适用于我的代码,正如我将在底部解释的那样。
这是我的服务代码,
app.service('loginService', function ($http) {
var loggedInUser = []
//If the login was successful this will be used
this.setLoginDetails = function(userDetails){
loggedInUser.push(userDetails);
}
this.GetLoginUsername = function () {
return loggedInUser.Username;
}
});
现在我的两个控制器,
app.controller('loginController', function ($scope, $rootScope, loginService, $location, $window) {
$scope.authenticateLogin = function () {
// get record
var user = {
Username: $scope.username,
Password: $scope.password
};
var promisePost = loginService.post(user);
promisePost.then(function (result) {
var res = result.data;
//This is the important line
loginService.setLoginDetails(user);
$window.location.href = loginPageUrl;
},
function (errorResult) {
console.log("Unable to log in : " + errorResult);
});
}
});
我的控制器正在尝试检索已设置的信息,
app.controller('userController', function ($scope, userService, $window, $modal, loginService) {
// Get the current logged in user
$scope.LoggedInAs = loginService.GetLoginUsername();
});
我遇到的问题是第一个控制器正确设置了用户名,但是当我尝试使用第二个控制器访问该信息时,loggedInUser 的值为 null,因此该值没有保存在控制器。我做错了什么?
var loggedInUser = []
是一个数组,所以如果你想获得用户名,你必须做 loggedInUser[0].Username
而不是 loggedInUser.Username
.
this.GetLoginUsername = function () {
return loggedInUser[0].Username;
}
此外,如评论中所述,要么使用 ngRoute/uiRouter 更改 page/url...
我是 angular 的新手,我正在尝试寻找一种在控制器之间传递变量的方法。我看到实现此目的的最佳方法是使用服务,如下所示 - AngularJS: How can I pass variables between controllers?
但是,这似乎不适用于我的代码,正如我将在底部解释的那样。
这是我的服务代码,
app.service('loginService', function ($http) {
var loggedInUser = []
//If the login was successful this will be used
this.setLoginDetails = function(userDetails){
loggedInUser.push(userDetails);
}
this.GetLoginUsername = function () {
return loggedInUser.Username;
}
});
现在我的两个控制器,
app.controller('loginController', function ($scope, $rootScope, loginService, $location, $window) {
$scope.authenticateLogin = function () {
// get record
var user = {
Username: $scope.username,
Password: $scope.password
};
var promisePost = loginService.post(user);
promisePost.then(function (result) {
var res = result.data;
//This is the important line
loginService.setLoginDetails(user);
$window.location.href = loginPageUrl;
},
function (errorResult) {
console.log("Unable to log in : " + errorResult);
});
}
});
我的控制器正在尝试检索已设置的信息,
app.controller('userController', function ($scope, userService, $window, $modal, loginService) {
// Get the current logged in user
$scope.LoggedInAs = loginService.GetLoginUsername();
});
我遇到的问题是第一个控制器正确设置了用户名,但是当我尝试使用第二个控制器访问该信息时,loggedInUser 的值为 null,因此该值没有保存在控制器。我做错了什么?
var loggedInUser = []
是一个数组,所以如果你想获得用户名,你必须做 loggedInUser[0].Username
而不是 loggedInUser.Username
.
this.GetLoginUsername = function () {
return loggedInUser[0].Username;
}
此外,如评论中所述,要么使用 ngRoute/uiRouter 更改 page/url...