2017-08-15 32 views
5

Witam Mam funkcję, która zostanie zaktualizowana po wysłaniu żądania http na serwer. Wygląda na to, że plik console.log pokazuje, że wartość została zaktualizowana, ale interfejs nie jest aktualizowany, chyba że kliknę na inny komponent (np. Wejście).Ionic 3 nie aktualizuje widoku

To jest moja funkcja:

fileTransfer.upload(this.created_image, upload_url, options) 
.then((data) => { 
    console.log("success:"+data.response); //This is showing correct response 
    var obj = JSON.parse(data.response); 
    this.sv_value = obj.value; 
    console.log(this.sv_value); //This is showing correct value 
}, (err) => { 
    console.log("failure:"); 
}) 

To jest mój pogląd html:

<ion-row> 
     <ion-col center width-100 no-padding> 
     <h2>{{sv_value}}</h2> //This is not updated 
     </ion-col> 
    </ion-row> 

Czy jest jakiś sposób mogę rozwiązać ten problem? Dziękujemy

+0

ale rejestrujesz tę wartość. Nit sv_value –

+0

Czy znalazłeś rozwiązanie? – robbannn

+0

@mohamadrabee Przepraszamy, to literówka na pytanie. Edytowano –

Odpowiedz

5

Spróbuj umieścić this.sv_value = obj.value; wewnątrz NgZone.run();, aby wykreślić zmianę kątową.

import { Component, NgZone } from "@angular/core"; 
... 

export class MyComponentPage { 
    constructor(
     private zone: NgZone 
     ... 
    ){ } 

    yourFunction(){ 
     fileTransfer.upload(this.created_image, upload_url, options) 
     .then((data) => { 
      console.log("success:"+data.response); //This is showing correct response 
      var obj = JSON.parse(data.response); 

      this.zone.run(() => { 
       this.sv_value = obj.value; 
      }); 

      console.log(this.value); //This is showing correct value 
     }, (err) => { 
      console.log("failure:"); 
     }); 
    } 
} 
+0

Dzięki, czy mogę o coś zapytać? Czy jest to popularny sposób aktualizowania wartości w interfejsie użytkownika w Angular 2? dzięki –

0

Niestety, działa również idealnie, dodając tę ​​linię.

Observable.interval().subscribe(); 

Musisz wiele importować te dwie linie.

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/interval';