gpt4 book ai didi

javascript - $window 重置我的服务

转载 作者:行者123 更新时间:2023-12-03 09:32:02 24 4
gpt4 key购买 nike

我正在使用 Angular 创建登录页面。在后端处理登录后,我从 LoginCtrl 设置 MyService 中的值,然后使用 $window.location.href= 'main.jsp';< 移至下一页。/ .但是当我从 HomeCtrl 调用在 LoginCtrl 中设置的值时,这些值是空的?

我知道服务是单例的,并且将在整个应用程序中保持相同的状态。但在这种情况下,它只是重置。我认为这是因为使用了 $window.location.href 。请帮我解决我的问题。

这是我的服务( MyService ):

app.service('MyService', function() {
var user = {
name: '',
permissions: ''
};

this.getUser = function() {
return user;
}

this.setUser = function(userr) {
this.user = userr;
}
});

这是我的 LoginCtrl:(我刚刚发布了 http.post 部分)

$http({
method: 'POST',
url: 'login',
data: JSON.stringify($scope.user),
headers: {
'Content-Type': 'application/json'
}
}).success(function(data) {
if (!("failure" == data)) {
console.log(data);
var user = MyService.getUser();
user.name = data.name;
user.permissions = data.permissions;
console.log(user);
console.log(MyService.getUser());

$window.location.href = 'main.jsp';
// MyService.changeLocation('main.jsp', true);
} else {
$scope.information = "Invalid username/password!"
}
}).error(function(data) {
console.log(data);
});

这是我的 HomeCtrl:

app.controller('HomeCtrl', function($scope, $http,MyService) {

console.log(MyService.getUser());
var user = MyService.getUser();
$scope.flashMessage="Hello " + user.name;
});

此处user.name为空。

最佳答案

您正在更改您的网页。 Angular 应用程序不会跨网站边界持续存在;删除对 window.location.href 的更改。

为了模拟 Angular 中的页面更改,请考虑使用官方路由器(随 Angular 1.4+ 一起提供)、ngRoute 或 Angular UI Router。这些解决方案使用 HTML History Api 和后备 hashbang URL 来模拟您想要实现的目标。

这最终会创建一个单页应用程序,这就是 Angular 的设计目的。

关于javascript - $window 重置我的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31475204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com