Я использую модули ngStorage, которые можно найти здесь: https://github.com/gsklee/ngStorage
Я установив lastSeenId в LocalStorage для социального корма живет обновления, так как это гибрид приложение (Laravel/AngularJS) Я не могу сохранить его в $scope
.
Мои StatusesController
получает массив или данные (или вообще ничего, если никто не для просмотра) когда-либо X секунд, и я получаю последний элемент массива и установить мой $localStorage
вар, как это: $localStorage.lastStatusSeen = lastId;
Мой навигационный контроллер, где Я установил несколько новых счетчиков, чтобы пользователь мог убедиться, что они что-то пропустили, я получаю lastSeenId следующим образом: $scope.$storage.lastStatusSeen
, который отправляется на мой API, чтобы вернуть несколько невидимых сообщений о статусе.
Это все работает, пользователь находится на странице состояния, если новые данные, а затем установите локальное хранилище var в последний идентификатор в массиве данных.
Проблема в том, что мой NavigationController
не находит это изменение и всегда передает lastSeenId
, который был передан, когда пользователь впервые посетил страницу.
Есть ли способ посмотреть этот ключ в локальном хранилище для изменений?
EDIT: В соответствии с просьбой, обновленный код
app.controllers.navigationController = ['$scope', 'pollingService', '$localStorage', function($scope, pollingService, $localStorage) {
$scope.lastStatusSeen = $localStorage.lastStatusSeen;
$scope.$watch(function() {
return $localStorage.lastStatusSeen;
}, function (newVal, oldVal) {
if (!newVal) {
return;
}
if (newVal !== oldVal) {
// Assign to a local scoped var, or anything, here...
$scope.lastStatusSeen = newVal;
// I suggest call a method to do your logic outside this
//$scope.onIdChange(newVal, oldVal); // If you need oldVal
}
});
pollingService.startPolling('emailCount', 'api/email/new-count', 5000, function(response) {
$scope.emailCount = response.data;
});
pollingService.startPolling('statusCount', 'api/social/new-count?lastid=' + $scope.lastStatusSeen, 5000, function(response) {
$scope.socialCount = response.data;
});
}];
Это не похоже на работу, я делаю как описано выше, код предполагает, я назначаю его в сферу var put мой вызов AJAX по-прежнему показывает ID 23, когда локальное хранилище показывает 24? – ChrisBratherton
Вопрос обновлен, я помещаю это в свой контроллер навигации? – ChrisBratherton
Но если я ставлю вызов pollingService внутри моего наблюдателя, это вызовет только после того, как ID был изменен? Эта функция опроса сервера каждые 5 секунд или около того? – ChrisBratherton