【发布时间】:2015-09-29 20:00:56
【问题描述】:
我正在将我的控制器中的所有 http 调用转移到服务中,使用 $q 承诺......一切似乎都在工作,直到我刷新页面然后内容消失。
设置:在我的登录服务中,我有一个执行$http.post 的函数,它需要username 和password。然后将响应数据放入promise中。
问题:虽然服务工作正常,但它正在尝试在页面刷新时重新发送 http 调用。然后调用失败,因为没有登录详细信息。
问题:我如何保留/存储原始数据,以便在页面刷新时(并且用户仍然登录)以及在其他情况下使用该服务时控制器它不做http调用它只是返回数据?
服务:
var app = angular.module('myApp', ['ngRoute']);
app.factory('loginService', function($http, $q) {
var deferResults = $q.defer();
return {
appContent: function(login_username, login_password) {
$http.post('/login',{username: login_username, password: login_password}).success(function(data) {
deferResults.resolve(myData);
});
return deferResults.promise;
}
});
控制器:
function loginPageCtrl($scope, loginService) {
$scope.login = function (login_username, login_password, login_rememberMe) {
loginService.appContent(login_username, login_username).then(function (data) {
$scope.pageOneContent = data;
});
};
};
function pageTwoCtrl($scope, loginService) {
// Use the same data when page is refreshed
// without having to pass-in login details
loginService.appContent().then(function (data) {
$scope.pageTwoContent = data;
});
};
【问题讨论】:
标签: javascript angularjs angular-services