2017-04-04 2 views
0

ローカルストレージから値を取得してモーダルに渡しています。コード内のコードobj{selectedRadious: 500, DistanceUnit: 'Meters'}であるthis.storage.get()が非同期関数であるコードのの行にコードを出力します。どのようにローカルストレージ値を取得するためにそれを処理するには?非同期ローカルストレージ関数から値を取得し、それをモーダルイオン2に渡す方法

let obj = {selectedRadious: 500, DistanceUnit: 'Meters'}; 

this.storage.get('lastSetValue').then((val) => { 

    if(val.selectedRadious){ 
    this.selectedRadious = val.DistanceUnit; 
    } 

    if(val.DistanceUnit){ 
    this.DistanceUnit = val.DistanceUnit; 
    } 

    obj = {selectedRadious: this.selectedRadious, DistanceUnit: this.DistanceUnit}; 
}) 
.catch(err=>{ 
}); 

console.log(obj); 
let myModal = this.modalCtrl.create(SettingModalPage, obj); 

myModal.onDidDismiss(data => { 
console.log('modal value: '+data.DistanceUnit) 
this.DistanceUnit = data.DistanceUnit; 
this.selectedRadious = data.selectedRadious; 

let objValue = {selectedRadious: this.selectedRadious, DistanceUnit: this.DistanceUnit}; 

this.storage.set('lastSetValue', objValue); 
}); 
myModal.present(); 

答えて

2

私はここでそれに答えてきたように:Can't resolve all parameters for Storage: (?)

をあなたはその約束の.then()に分解約束からの値にアクセスしているコードを移動する必要があります。非同期操作であるため、使用するまでには使用できない場合があります。

など。これは仕事ができる:

presentModal() { 
    this.storage.get('distUnit').then((val) => { 
     console.log('Your distUnit is', val); 
     this.DistanceUnit = val; 
     this.storage.get('SetRadious').then((val) => { 
      console.log('Your SetRadious is', val); 
      this.selectedRadious = val; 

      this.modalCreator(); 
     }) 
     .catch(err=>{ 
      console.log('Your SetRadious dont exist: ' + JSON.stringify(err)); 
      this.selectedRadious = 500; 
      this.modalCreator(); 
     }); 
    }) 
    .catch(err=>{ 
     console.log('Your distUnit dont exist: ' + JSON.stringify(err)); 
     this.DistanceUnit = 'Meters'; 

     this.storage.get('SetRadious').then((val) => { 
      console.log('Your SetRadious is', val); 
      this.selectedRadious = val; 

      this.modalCreator(); 
     }) 
     .catch(err=>{ 
      console.log('Your SetRadious dont exist: ' + JSON.stringify(err)); 
      this.selectedRadious = 500; 
      this.modalCreator(); 
     }); 
    }); 
} 

modalCreator(){ 
    let obj = {selectedRadious: this.selectedRadious, DistanceUnit: this.DistanceUnit}; 
    let myModal = this.modalCtrl.create(SettingModalPage, obj); 

    myModal.onDidDismiss(data => { 
     console.log('modal value: '+data.DistanceUnit) 
     this.DistanceUnit = data.DistanceUnit; 
     this.selectedRadious = data.selectedRadious; 

     this.storage.set('distUnit', this.DistanceUnit); 
     this.storage.set('SetRadious', this.selectedRadious); 
    }); 
    myModal.present(); 
} 

あなたは慎重にコードを読めば、あなたは私がパラメータとそれらの一つが失敗した場合の両方を取得するためにすべてのケースを扱っていることを知るようになるだろう。それをチェックして、私に知らせてください。

関連する問題