2016-12-06 8 views
1

定期的にサーバから取得する静的でない変換ファイルがあります。私はファイルの形式を変更することはできません。イオン2クラスのプロパティへの遅延アクセス

新しいページが私のIonic Appにインストールされたとき、私はthis.traductionsをstorageの値から設定しました。以下のコンストラクタを参照してください。

constructor(storage: Storage, public navCtrl: NavController, public navParams: NavParams, public commandeService: CommandeService, public alertCtrl: AlertController, public translate: TranslateService) { 

    this.categorie = this.navParams.get('categorie'); 

    storage.get('boissons').then((StringBoissons) => { 
     var boissons: Array<any> = JSON.parse(StringBoissons); 
     this.boissons = boissons.filter(
     (value) => { 
      return value.tboi_id == this.categorie.tboi_id; 
     }); 
     } 
    ); 
    storage.get('traductions').then((val) => { 
     this.traductions = JSON.parse(val); 
    }); 
    this.commande = commandeService.getCommande(); 
    this.translate = translate; 
    } 

その後、私のビューの呼び出しgetTraduction(...)

getTraduction(table, champ, id, objet) { 
    var traduction = this.traductions.find((value) => { 
     return value.trad_table == table && value.trad_champ == champ && value.trad_code_langue == this.translate.currentLang && value.trad_id_item == objet[id]; 
    }); 
    if (traduction && traduction.trad_texte ) 
     return traduction.trad_texte; 
    else 
     return objet[champ]; 
    } 

にすべてがブラウザプレビューで正常に動作しますが、デバイス上で、私は

がnull の「検索」メソッドを呼び出すことはできません取得t.getTraductionで

私はそれが非同期の結果であると思いますが、私はそれをどうにかして解決する方法を理解できません。任意の洞察力

答えて

0

OKかなりばかな質問を事前に

おかげで、実際にシルヴァン: あなたは、プロバイダにごgetTraduction機能を入れている必要があります。

@Injectable() 
export class TraductionDynaService { 

    traductions; 

    constructor(
    public storage: Storage, 
    public http: Http, 
    public translate: TranslateService, 
    ) { 
    storage.get('traductions').then((val) => { 
     this.traductions = JSON.parse(val); 
    }); 
    } 

    getTraduction(table, champ, id, objet) { 
    var traduction = this.traductions.find((value) => { 
     return value.trad_table == table && value.trad_champ == champ && value.trad_code_langue == this.translate.currentLang && value.trad_id_item == objet[id]; 
    }); 
    if (traduction && traduction.trad_texte ) 
     return traduction.trad_texte; 
    else 
     return objet[champ]; 
    } 

} 

そして、それは魅力的に機能しました。 getTraduction(...)は、traductionがnullまたは未定義のときに処理する約束を返すこともできます。

関連する問題