Как я могу избежать вызова API при нажатии кнопки назад браузера в Angular 6?

Если вы хотите только округлить числовые числа вверх (как это делал OP фактически), вы можете прибегнуть к этому решению:

public static class MathExtensions
{
    public static int RoundUpTo(this int number, int nearest)
    {
        if (nearest < 10 || nearest % 10 != 0)
            throw new ArgumentOutOfRangeException(nameof(nearest), $"{nameof(nearest)} must be a positive multiple of 10, but you specified {nearest}.");

        int modulo = number % nearest;
        return modulo == 0 ? number : modulo > 0 ? number + (nearest - modulo) : number - modulo;
    }
}

Если вы хотите выполнить с плавающей запятой (или десятичной) округлить, затем прибегнуть к ответам @krizzzn и @Jim Aho.

2
задан Egon Allison 26 February 2019 в 13:53
поделиться

2 ответа

Если вы имеете в виду «вызовы API, которые отправляются в результате загрузки JavaScript для страницы A», то вы захотите использовать localStorage для сохранения информации в браузере по всей странице грузы. Чтобы реализовать это, вы должны будете предоставить логику, которая проверяет localStorage «кэшированную» информацию перед вызовом API для данных. Таким образом, если ваш пользователь нажмет кнопку «Назад» в браузере, JavaScript проверит, что уже есть данные из API в localStorage, а затем пропустит выполнение вызова API.

Примечание: вам нужно будет localStorage.clear() или localStorage.removeItem('itemKey') удалить элемент, если вы хотите очистить «кэшированные» данные. Эта логика будет зависеть от вашего варианта использования.

Примером может быть следующий:

@Component({
  selector:    'app-hero-list',
  templateUrl: './hero-list.component.html'
})
export class HeroListComponent implements OnInit {

  constructor(private heroService: HeroService) {}

  ngOnInit() {
    if (!window.localStorage.getItem('myData')) {
      this.heroService.loadData().subscribe(
        (data) => window.localStorage.setItem('myData', JSON.stringify(data))
      );
    } else {
      // Load the data by parsing the stored JSON string:
      // const data = JSON.parse(window.localStorage.getItem('myData'))
    }
  }
}
0
ответ дан Tim Klein 26 February 2019 в 13:53
поделиться

Является ли ваша страница & amp; страница b часть того же углового сайта? Если это так, то вы можете сохранить свой массив как глобальный объект в слое сервиса. Когда вы вернетесь на страницу b, просто получите доступ к значению и, если оно не равно нулю, не выполняйте вызовы службы. Другой вариант - использовать локальное хранилище, как описано выше

.
0
ответ дан Zeus 26 February 2019 в 13:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: