возвращаемое значение из наблюдаемой для просмотра проблемы - PullRequest
0 голосов
/ 23 апреля 2019

Я работаю над загрузкой изображения с помощью nativescript, но я не могу вернуть изображение base64 в мое представление для предварительного просмотра, проблема в том, что моя функция не читает мою глобальную переменную.

вот код

myImg:any;
pickFiles() {
let options = {
  title: "Importer",
  cancelButtonText: "Annuler",
  actions: ["Image(s)", "Video(s)", "Audio(s)", "Fichier(s)"]
};
dialogs.action(options).then(async (result) => {
  if (result == 'Image(s)') {...}
  if (result == 'Video(s)') {...}
  if (result == 'Audio(s)') {...}
  if (result == 'Fichier(s)') {...}
  this.mdf.on("getFiles", async function (res: any) {
    let results = res.object.get('results');
    let img1 = await imageSourceModule.fromFile(results[0].file).toBase64String('jpg');
    // let img2 = await imageSourceModule.fromBase64(img1)
   this.myImg;
  });
  this.mdf.on("error", function (res) {
    let msg = res.object.get('msg');
    console.log(msg);
  });
});

Я ожидаю, что переменная myImg получит новое значение img, но когда я связываю его для просмотра, оно становится нулевым.

1 Ответ

0 голосов
/ 23 апреля 2019

myImg1, на который вы ссылаетесь из анонимной функции, ссылаться не будет, и вы должны получить ошибку на консоли. Причина в том, что анонимная функция будет иметь ее, она this и не будет ссылаться на this компонента. Так что вам нужно иметь функцию стрелки:

Вам нужно изменить свой код следующим образом:

pickFiles() {
let options = {
  title: "Importer",
  cancelButtonText: "Annuler",
  actions: ["Image(s)", "Video(s)", "Audio(s)", "Fichier(s)"]
};
dialogs.action(options).then(async (result) => {
  if (result == 'Image(s)') {...}
  if (result == 'Video(s)') {...}
  if (result == 'Audio(s)') {...}
  if (result == 'Fichier(s)') {...}
  this.mdf.on("getFiles", async (res: any) => {
    let results = res.object.get('results');
    let img1 = await imageSourceModule.fromFile(results[0].file).toBase64String('jpg');
    // let img2 = await imageSourceModule.fromBase64(img1)
    this.myImg = img1;
  });
  this.mdf.on("error", function (res) {
    let msg = res.object.get('msg');
    console.log(msg);
  });
});
...