2017-07-20 70 views
1

我是新來的Ionic和我使用AngonicIO的Ionic 3.5,對於我的情況問題是在ajax調用後我從服務獲取數據但視圖沒有更新模擬器。雖然該視圖正在Web版本中正確渲染。 這裏是我的組件和HTML查看不在Ionic 3.5更新

export class HomePage { 

    private tagService: TagService; 
    public tagData: any; 

    constructor(public navCtrl: NavController) { 
    this.tagService = new TagService(); 
    this.loadTags(); 
    } 

    private loadTags() { 
    this.tagService.getTagData().then((data)=>{ 
     this.tagData = data;alert(JSON.stringify(data)); 
    },()=>{ 
     alert("Error occured"); 
    }); 
    } 

} 

<ion-item *ngFor="let tag of tagData" (click)="tagClicked($event)" class="activity" color="positive" data-item="tag"> 
     {{tag.name}} 
     <ion-icon name="{{tag.icon}}" item-right></ion-icon> 
    </ion-item> 

service()方法是在這裏

public getTagData() :Promise<Tag[]> { 
     let promise: Promise<Tag[]>; 
     promise = new Promise((resolve, reject)=>{ 
      $.ajax({ 
       url: "data/tag.data.json", 
       success: (data) => { 
        this.tags = data; 
        resolve(this.tags); 
       }, 
       error:() => { 
        reject(); 
       } 
      }); 
     }); 
     return promise; 
    } 
+0

顯示'this.tagService.getTagData()'與服務功能更新方法 –

+0

。順便說一句,如果我把警報與獲得的數據,其正確顯示 –

回答

2

我認爲你是從loadTags函數返回observable代替promise。在這種情況下,訂閱事件,而不是使用then

private loadTags() { 
    this.tagService.getTagData().subscribe((data) => { 
     this.tagData = data; 
     alert(JSON.stringify(data)); 
    }, (error) => { 
     alert("Error occured"); 
    }) 
} 

不使用jquery ajax語法。使用角2個內置組件

public getTagData(): any { 

    return this.http.get("data/tag.data.jso") 
} 
+0

即使在模擬器中我從服務中獲取數據,這不是問題。它只是視圖不會在模擬器中呈現。 –

+0

謝謝,使用角度組件工作。但是,如果我使用Jquery,請告訴我爲什麼它不會發生?正如我所說我正在獲取數據,但該視圖並未更新。 –

+0

,因爲jquery ajax會停止角度的雙向綁定。所以即使結果來到你的js它也不會綁定到視圖。這就是爲什麼總是在構建組件中使用角度 –