【问题标题】:Ionic pushed view returning updated data离子推送视图返回更新数据
【发布时间】:2018-05-29 08:49:47
【问题描述】:

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

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() 应该返回更新的数据,但我不知道如何/在哪里访问它。

感谢您的帮助。

【问题讨论】:

    标签: angular cordova ionic-framework


    【解决方案1】:

    我只需要离开一会儿,我就意识到我需要做什么。我用这段代码替换了我的 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();
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多