作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在服务中保存季节标记,但每次我加载新页面时,服务器似乎都会自行重置
angular.service.js:
var appBooking = angular.module('Booking');
appBooking.service('WebService', ['$http', '$rootScope', function ($http, $rootScope) {
this.setToken=function (tkn){
$rootScope.token=tkn;
};
this.getToken=function () {
return($rootScope.token);
};
this.login = function (user, password) {
var dato={'usuario':{'username': user, 'password': password}};
return $http.post('http://localhost:8080/Booking/login',dato);
};
}]);
angular_apps.js:
angular.module('Booking', []);
angular_controllers.js:
var appBooking = angular.module('Booking');
appBooking.controller('CtrlLogin', ['$scope', 'WebService', function ($scope, WebService) {
var self = this;
self.login = function (user, password) {
WebService.login(user, password)
.then(function (jsonObject) {
console.log("Login success");
location = "profilepage.html";
token = jsonObject.data.token;
WebService.setToken(token);
}, function errorCallBack(response){
console.log("Login failed");
});
};
}]);
Controller LoginController 附加到登录表单并正确设置值,但是当我加载新页面时 $rootScope.token 未定义。
在 html 页面中,我加载了一个在与 LoginController 相同的文档中定义的 Controller ,例如:
appBooking.controller('CtrlProfile', ['$scope', 'WebService', function ($scope, WebService) {
//content here
}]);
在每个 html 文件中的每个标签之前,我加载以下脚本
<script src="../js/angular.js"></script>
<script src="../js/angular_apps.js"></script>
<script src="../js/angular_services.js"></script>
<script src="../js/angular_controllers.js"></script>
我做错了什么?
最佳答案
如果 AngularJS 不会重新加载您的服务,您需要确保 AngularJS 正在处理所有必要的应用程序内路由。您如何处理页内路由更改?对于您的代码:
var appBooking = angular.module('预订');
appBooking.controller('CtrlLogin', ['$scope', 'WebService', function ($scope, WebService) {
var self = this;
self.login = function (user, password) {
WebService.login(user, password)
.then(function (jsonObject) {
console.log("Login success");
// What is this line supposed to do????
location = "profilepage.html";
token = jsonObject.data.token;
WebService.setToken(token);
}, function errorCallBack(response){
console.log("Login failed");
});
};
}]);
您分配了位置
。如果它用于更改浏览器位置,并且 Angular JS 应用程序未处理该浏览器位置更改,则浏览器页面将重新加载,并且您的 Angular JS 应用程序将重置。
关于angularjs - 为什么每次加载新页面时我的 angularjs 服务都会重新加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37639468/
我是一名优秀的程序员,十分优秀!