проблема при использовании локального хранилища в ионном - PullRequest
0 голосов
/ 24 января 2019

Что я пытаюсь сделать- я устанавливаю (снова) некоторые ключевые (которые установлены в какой-то другой точке моего приложения, т. е. вход в систему) пары значений в локальном хранилище при вызове функции. похоже на сброс пароля. и он работает нормально, только проблема в том, что когда я нахожусь на тех же страницах после сброса их, он показывает неопределенное. но когда я снова захожу в систему, эти значения меняются и отображаются последние значения.

Я также пытался работать на устройстве Android и в ионной подаче и ионной лаборатории. это никогда не работало.

constructor(public navCtrl: NavController,
 public navParams: NavParams,
 public apiConnect:ApiIntegrationProvider,
 public loadingCtrl:LoadingController,
 public toastCtrl:ToastController,
  public storage: Storage) {

console.log(this.user_name)
this.fetchProfile();
 }

fetchProfile(){
this.user_role=localStorage.getItem("userRole");
this.user_name=localStorage.getItem("userName");
this.user_Email=localStorage.getItem("userEmail");
this.user_Mobile=localStorage.getItem("userMobile");
this.user_Avatar=localStorage.getItem("userAvatar");
this.user_Language=localStorage.getItem("userLanguage");
this.company_name=localStorage.getItem("companyName");
this.company_email=localStorage.getItem("companyEmail");
this.company_punch=localStorage.getItem("companyPunch");
this.company_url=localStorage.getItem("companyUrl");
console.log("user data")
console.log("company name", this.company_name,"email",this.company_email,"punch",this.company_punch,"website", this.company_url,"language", this.user_Language);
if(this.user_Language=='pt'){
  this.language="Portuguese"
}else{
  this.language="English"
}
if(this.user_role=='25'){ 
this.role='Inspector';

}else if(this.user_role=='35'){
this.role='Team Lead';
 }else if(this.user_role=='45'){
 this.role='Moderator';
}else if(this.user_role=='55'){
  this.role='Administrator';
}else if(this.user_role=='65'){
  this.role='Super Administrator';
}

}




 editProfile(){
console.log(this.decideEditProfile);
console.log("edit profile function")
this.decideEditProfile=true;

  }



  SaveProfile(){
    console.log(this.decideEditProfile);
    console.log("edit profile function")
    this.decideEditProfile=false;
    this.useredit();
  }

   ionViewDidLoad() {

  console.log('ionViewDidLoad ProfilePage');

  }
  showToast(position: string) {
    let toast = this.toastCtrl.create({
      message: this.editStatus.message,
      duration: 2000,
      position: 'top'
    });
    toast.present(toast);
  }
  useredit() {
    const loader = this.loadingCtrl.create({
      content: "Please wait...",
      duration: 3000
    });
    loader.present();
    let passingValue = {
      "user_id": '3',
      "inputName": 'James Red',
      "inputEmail":'moderator@gmail.com.in',
      "inputPassword":'123456'
    }
     this.apiConnect.postEditProfile( 
  JSON.stringify(passingValue)).subscribe((data) => {
  console.log("login api "+JSON.stringify(data));

  this.editStatus = data;
  if (this.editStatus.status == "success") {
    localStorage.removeItem("userName");
    localStorage.removeItem("userEmail");
    localStorage.removeItem("userMobile");
    localStorage.removeItem("userAvatar");
    localStorage.removeItem("userLanguage");
    localStorage.setItem("userName",this.editStatus.Profile.fullName);
    localStorage.setItem("userEmail",this.editStatus.Profile.emailAddress);
    localStorage.setItem("userMobile",this.editStatus.Profile.mobile);
    localStorage.setItem("userAvatar",this.editStatus.Profile.avatar);
    localStorage.setItem("userLanguage",this.editStatus.Profile.languagePreference);

    this.showToast('top');
    this.navCtrl.push("DashBoardPage");
  }
  else {

    this.showToast('top');
  }
  loader.dismiss();
})

}

1 Ответ

0 голосов
/ 25 января 2019

От вашего вопроса вы пытаетесь сказать, что даже после обновления localstorage вы получаете старое значение или undefined.Таким образом, возможно, что возвращаемые вами данные могут быть нулевыми или пустыми.Вы должны тщательно отладить свое приложение, потому что localstorage не работает таким же образом.Выполните консольный тест.

Также в этом фрагменте кода:

if (this.editStatus.status == "success") {
    localStorage.removeItem("userName");
    localStorage.removeItem("userEmail");
    localStorage.removeItem("userMobile");
    localStorage.removeItem("userAvatar");
    localStorage.removeItem("userLanguage");
    localStorage.setItem("userName",this.editStatus.Profile.fullName);
    localStorage.setItem("userEmail",this.editStatus.Profile.emailAddress);
    localStorage.setItem("userMobile",this.editStatus.Profile.mobile);
    localStorage.setItem("userAvatar",this.editStatus.Profile.avatar);
    localStorage.setItem("userLanguage",this.editStatus.Profile.languagePreference);

    this.showToast('top');
    this.navCtrl.push("DashBoardPage");
  }

Вам не нужно удалять элементы без необходимости, вы можете просто установить localstorage, и старые значения будутзаменены на новые значения.

Надеюсь, это поможет вам.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...