2016-12-02 43 views
3

我有一個組件使用Ionic modal修改相冊變量。離子模態變化檢測

addMedias() { 
    let self = this; 
    let profileModal = self.modalCtrl.create(AlbumAddPage, { album: self.album }); 
    profileModal.onDidDismiss(data => { 
     self.zone.run(() => { 
     console.log("ALBUM " + data.album) 
     self.album = data.album; 
     }) 
    }); 
    profileModal.present(); 
    } 

我試圖強迫變化檢測用ChangeRefDetectormarkForCheck()detectChanges(),然後我試圖用角區域,但是當onDidDismiss()被調用時,此組件的視圖不更新。 有什麼想法?

編輯:這裏是模態代碼:

@Component({ 
    selector: 'page-album-add', 
    templateUrl: 'album-add.html' 
}) 
export class AlbumAddPage { 
    album: any; 

    constructor(
    private navParams: NavParams, 
    public navCtrl: NavController, 
    private viewCtrl: ViewController, 

) { 
     this.album = navParams.data.album; 

    } 

    addMedias(asset){ 

     this.album.assets.push(asset); 
     this.viewCtrl.dismiss({album:this.album}); 

    } 

}

+0

可以共享模態網頁代碼? –

+0

當然,看到編輯來了;) –

+0

控制檯正在記錄數據? –

回答

1

好吧,我發現的伎倆!

album值在父級更改時,angular並未將其檢測爲「已更改」:由於我在具有相同專輯實例的模式中工作,父級看到模式傳回的album未發生任何更改。

我不得不創建相冊的新實例,並把它傳遞給我的模式,使其工作(見here是把我在正確的方向上的鏈接):

 let self = this; 
     let album = this.album; // Copies the album 
     this.album = []; // Changes the album 
     let editionModal = self.modalCtrl.create(AlbumEditionPage, { 
      album: album 
     }); 
     editionModal.onDidDismiss(data => { 
      setTimeout(function() { 
       console.log("new album data from edition : ") 
       self.album = data.album 
       console.log(data.album); 
       console.log(self.album); 
      }, 0) 

     });