В моем процессе регистрации приложения AngularJS я постоянно обновляю объект пользователя.
Возможно, это неправильный способ сделать это, но я использую один «регистрационный» контроллер для всех этих шагов регистрации (так как логика на шагах очень схожа, и она делает более аккуратный код, а не делает отдельный «signup1», «signup2» и т.д. контроллер для каждого вида
Я обещаю, что возвращает userInfo
из моей базы данных:.
.service('userInfo', function ($http, $cookies) {
var userId = $cookies.id;
console.log("UI Cookies", $cookies);
var promise = $http.get('/api/findProfile/' + userId, { cache: false}).
success(function (data) {
var userInfo = data;
console.log("This is fresh data!") // This logs the first time I load my page, but never again
return userInfo;
}).error(function(data) {
console.log("ERROR")
return userInfo
});
return promise;
})
При переходе от одного шага регистрации к следующему, я обновить профиль профиля на MongoDB, затем загрузите следующую страницу. Если я загружу страницу с помощью изменения $location('')
с моего контроллера, я старую userInfo
, который не обновляется в моей базе данных. Однако, если я полностью обновляю страницу, я получаю правильный, обновленный userInfo
.
Это проблема с кешированием? Я попытался прохождения {cache: false}
моих $http
обещания, но я не получаю свежие данные (как обозначено console.log("This is fresh data!")
, скорее, я получаю кэшированные данные обратно
Как я могу решить эту проблему за принуждать всю страницу. перезагружать в Угловом?
Ах, что имеет смысл, Я подумал, что это сойдет на меня, не понимая, как работают службы на самом деле! Так вы предлагаете просто загружать в '' http.get() 'вызов в мой контроллер, так что это новый набор данных каждый раз? – Jascination
Поцарапайте это, вы обновили его в своем ответе. Привет, дружище, понял! – Jascination
@ Привлекательность обоих подходов жизнеспособна, если вы хотите повторно использовать этот HTTP-запрос в других контроллерах, лучше переместить его в службу (возможно, также лучше с точки зрения проверки). Вы можете создать функцию в сервисе, которая при каждом вызове возвращает новое обещание. – doldt