我想在Ionic 2中显示一个模态并传递一些参数。这很好。 我的主要问题:参数是否绑定到navParams? 主要问题是,参数是否绑定到navParams?
var dataToPass = this.VLSMfields;
let modal = this.modalCtrl.create(VlsmMetaDataPage,dataToPass);
modal.onDidDismiss(data => {
//this.VLSMfields is already edited <- Problem
if(data != null){
this.VLSMfields.Inputs = data;
}
});
modal.present();
模态:
export class VlsmMetaDataPage {
constructor(public viewCtrl: ViewController,public alertCtrl: AlertController, public navParams: NavParams) {
}
Hosts = {
avalible : 0,
used : 0,
left:0,
}
inputs = [];
ionViewDidLoad() {
console.log('ionViewDidLoad VlsmMetaDataPage');
this.Hosts.avalible = this.navParams.data.Hosts;
this.Hosts.left = this.navParams.data.Hosts;
this.inputs = this.navParams.data.Inputs;
}
closeModal(){
this.viewCtrl.dismiss(null);
}
submitModal(){
//Gets edited before in HTML
this.viewCtrl.dismiss(this.inputs);
}
}
怎么了? 我只想将“this.VLSMfields.Inputs”设置为数据,如果dismiss不为null。
编辑: 我希望这段代码能更好地解释我的问题:
export class ProfilePage {
private test;
private test2;
constructor(public navCtrl: NavController,public viewCtrl: ViewController, private navParams: NavParams) {
this.test = navParams.get("data");
this.test2 = navParams.get("data");
}
ionViewDidLoad() {
console.log('ionViewDidLoad ProfilePage');
}
private doSmth(){
this.test.Edit = "test123";
console.log(this.test); // {edit:"test123"}
console.log(this.test2);// {edit:"test123"}
}
private cancel(){
this.navCtrl.pop();
}
private submit(){
this.navCtrl.pop();
}
}
为什么“test2”与“test”的值相同?
答案 0 :(得分:0)
您应该使用如下对象将数据传递给模态:
let modal = this.modalCtrl.create(VlsmMetaDataPage, { data: dataToPass });
然后你可以在你的模态中得到它:
public params;
constructor(navParams: NavParams) {
this.params = navParams.get('data');
}
您正在通过data
属性直接访问NavParams实例,并且因为NavParams是一个注入式,如果您不使用get()
方法,则直接修改数据。您可以找到NavParams文档here。
答案 1 :(得分:0)
我找到了答案,......
只是,使用JSON.stringify(this.object)
删除奇怪的绑定。
要从字符串中获取对象,请使用JSON.parse(this.objectJson);
我希望这可以帮助其他人解决同样的问题。