Ionic Storage и переменные

Я впервые изучаю платформу Ionic, и, очевидно, у меня есть некоторые проблемы с небольшой частью моего первого приложения. Я хочу иметь простой счетчик в кнопке: при нажатии этой кнопки счетчик увеличивается на 1. Затем я сохраняю значение с помощью хранилища и получаю то же значение на другой странице с помощью «storage.get».

Это код:

constructor(public storage:Storage, public platform: Platform){
  this.storage = storage;
  }

  ionViewDidLoad() {
    console.log("I'm alive!");
    this.counter = this.storage.get("Count").then((data)=>{
        console.log(data);
    });
  }

  public counter = 0;

  count(){
      this.counter+=1;
      this.storage.set("Count",this.counter);
  }

Когда я снова открываю приложение, я пытаюсь использовать сохраненное значение для продолжения увеличения счетчика, но оно снова начинается с 0: как я могу увеличить переменную счетчика, используя сохраненное значение?

Спасибо за вашу поддержку!


person Alessandro Pascolini    schedule 11.09.2017    source источник
comment
Когда вы получаете значение Count, вы только записываете его в консоль. Вы пытались установить значение счетчика .... this.counter = data; внутри функции then? Вместо console.log(данные).   -  person Steve Kennedy    schedule 11.09.2017
comment
Извините, я вставил неправильный код: да, я пытался написать this.counter = data, но когда я тестирую приложение с помощью ionic serve, появляется эта ошибка: Type promise‹void› не может быть назначен для типа 'number '   -  person Alessandro Pascolini    schedule 11.09.2017
comment
Хорошо, я нашел свою ошибку: теперь это работает. Спасибо за вашу помощь в любом случае!   -  person Alessandro Pascolini    schedule 11.09.2017


Ответы (1)


Вы устанавливаете this.counter для вызова обещания.

Сделайте это вместо этого:

this.storage.get("Count").then((data)=>{
   this.counter = data;
});

Кроме того, как только вы объявите инъекцию общедоступной в конструкторе, вам не нужно снова устанавливать ее внутри конструктора. Он автоматически будет доступен с экземпляром класса. В принципе, вам это не нужно.

this.storage = storage;
person Anjil Dhamala    schedule 11.09.2017
comment
Спасибо за совет! - person Alessandro Pascolini; 11.09.2017