Angular Как следить за изменениями в переменной Scope

0

Я пытаюсь создать свою собственную телеграмму в Angular и Node. Мой контроллер обрабатывает как пользовательские тележки в базе данных mongo, так и тележки в локальном хранилище (если у пользователя нет учетной записи). Прямо сейчас я создал способ для моего контроллера корзины удалить элемент корзины как из локального хранилища, так и из базы данных. Мой угловой вид наблюдает за объектом.

$scope.lineItems

Заполнение корзины предметами. Прямо сейчас я могу успешно получить обновленную корзину, но мне нужно обновить мою страницу. Каким будет лучший способ обновить область действия путем запуска функции, которая обновляет область действия?

Код:

if ( token ) {
    var payload = authService.parseToken(token);
    dataService.getCart(payload._id).then(function (resolve){
      if (resolve.data){
        $scope.lineItems = resolve.data; 

        $scope.deleteLineItem = function(lineitem){
            dataService.deleteLineItem([lineitem.lineItemID, payload._id]);
        }
      }
    }, function(reason){
      console.log(reason);
    });
} else {
    if (dataService.retrieveLocal('localCart')){
        $scope.lineItems = dataService.retrieveLocal('localCart');

        $scope.deleteLineItem = function(lineitem){
            var cart = dataService.retrieveLocal('localCart');
            var updatedCart = cart.filter(function(item){
                if (lineitem.lineItemID != item.lineItemID){
                    return item
                }
            })
            dataService.storeToLocal('localCart', updatedCart);
        }
    } 
}
Теги:
scope

1 ответ

0

Я настоятельно рекомендую вам не использовать AngularJS Watcher из-за большой нагрузки. Обычно в приложении стараются минимизировать ваши наблюдатели (таймеры). Кроме того, в вашем случае вам не нужно использовать watcher, потому что, когда вы используете LocalStorage нет необходимости обновлять страницу на всех вкладках браузера снова. Фактически, элементы вашей корзины просто смотрят ваши $localStorage.lineItems вместо $ scope.lineItems, и поскольку обновлен параметр $ localStorage.lineItems, вся вкладка браузера будет обновляться автоматически. И на одной вкладке у вас будет триггер для запуска запроса и обработки на стороне сервера на основе события клика и т.д. Затем в ответ обновите переменную localStorage ($localStorage.lineItems), поэтому ваш контент будет всегда обновляться.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню