离子3没有更新视图

问题描述:

嗨我有一个函数,将在服务器的http请求后更新。看来,console.log显示值已更新,但除非我点击任何其他组件(例如input),否则UI不会更新。离子3没有更新视图

这是我的函数:

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:"); 
}) 

这是我查看HTML:

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

有没有什么办法可以解决这个问题?谢谢

+0

但您记录this.value nit sv_value –

+0

您是否找到解决方案? – robbannn

+0

@mohamadrabee对不起,这是一个问题。编辑 –

试着把this.sv_value = obj.value;放在NgZone.run();里面让Angular检测到这个改变。

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

谢谢,我可以问一下吗?这是在Angular 2中更新用户界面价值的常用方法吗?谢谢 –

不幸的是,它也可以通过添加此行完美工作。

Observable.interval().subscribe(); 

很多人都需要导入这两行。

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