Ionic推送视图返回更新的数据

时间:2018-05-29 00:06:59

标签: angular cordova ionic-framework

我正在尝试将数据从推送视图传递回根目录。当我按下视图时,我正在执行以下代码:

addItem(){

    let addModal = this.modalCtrl.create(AddItemPage);

    addModal.onDidDismiss((item) => {
       if(item){
        this.saveItem(item);
        this.setData();
      }
 });

addModal.present();

}

当我执行此代码时,新视图将被推送到导航堆栈。我在推送的页面中输入信息,然后单击“保存”按钮。当我点击“保存”按钮时,我执行以下代码:

saveItem(){

    this.dateAdded=new Date();

    let newItem = {
      id: this.dateAdded,
      date: this.datepipe.transform(this.dateAdded, 'MM-dd-yy'),
      name: this.name,
      status: "pending",
      description: this.description
    };

    this.view.dismiss(newItem);

}

当控制权传递回根目录时,addModal.onDidDismiss代码将被执行,并且通过执行以下代码将推送视图返回的数据添加到我的数组中:

saveItem(item){
    this.items.push(item);
}

所以,我能够建立一个项目数组。现在,我希望能够更新任何选定的数组元素。当项目显示在根视图中并选择我的“编辑”按钮时,我可以在项目上滑动。当我这样做时,我执行此代码:

editItem(item,slidingItem){

  this.closeSlider(slidingItem);
  this.navCtrl.push(ItemUpdatePage, {
    item: item
  });
  if(this.navCtrl.viewDidLeave) {
    console.log("viewdidleave executed")
  }

}

显示我的更新页面,并使用导航参数中传递的数据填充输入框。我的问题是,当控制返回到根时,如何引用更新的数据?我试图引用this.navCtrl.viewDidLeave但是这不正确,因为我认为,此时,这是指根视图而不是更新视图。我相信this.navCtrl.push()应该返回更新的数据,但我不知道如何/在哪里访问它。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我只需要稍稍离开,我意识到我需要做什么。我用这段代码替换了我的editItem函数,我把一切都正常工作了:

editItem(item, slidingItem) {

  this.closeSlider(slidingItem);
  let addModal = this.modalCtrl.create(ItemUpdatePage,{
    item: item
  });

  addModal.onDidDismiss((item) => {

      if(item){
        this.updateArray(item);
      }

  });

  addModal.present();

}