我正在尝试将数据从推送视图传递回根目录。当我按下视图时,我正在执行以下代码:
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()应该返回更新的数据,但我不知道如何/在哪里访问它。
感谢您的帮助。
答案 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();
}