我是新來的角度,我試圖找到一個在控制器之間傳遞變量的方法。我看到了實現這一目標是通過使用服務的最佳方法,如下所示 - AngularJS: How can I pass variables between controllers?AngularJS:在控制器之間傳遞變量
然而,這似乎並沒有與我的代碼工作,我將在底部解釋。
這裏是我的服務代碼,
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,以便在控制器之間不保存該值。我究竟做錯了什麼?
我認爲這是由於:'$ window.location.href = loginPageUrl;'這刷新而不是改變狀態。 –
感謝您的回覆。我應該用什麼來代替這個? – user3407039
嘗試像這樣:https://scotch.io/tutorials/single-page-apps-with-angularjs-routing-and-templating –