Я перемещаю все HTTP-вызовы в своих контроллерах в службы, используя $q
для обещания ... Кажется, все работает, пока я не обновлю страницу, а затем содержимое исчезнет.
Настройка: в моей службе входа в систему у меня есть функция, которая выполняет $http.post
, она принимает username
и password
. Затем данные ответа помещаются в обещание.
Проблема: хотя служба работает, она пытается повторно отправить 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;
});
};