gpt4 book ai didi

typescript - 将 Ionic2 popover ngModel 值传递给父页面组件并调用函数?

转载 作者:搜寻专家 更新时间:2023-10-30 22:04:00 25 4
gpt4 key购买 nike

这是我正在尝试做的事情。

  • 将组单选按钮放在 Ionic2 弹出菜单中。
  • 选项实际上是控制内容是哪个JSON文件即将加载。
  • 用户选择一个选项,关闭弹出窗口,内容将更新相应地在页面中。

我不确定如何将值从 Ionic2 Popover 传递到它的父组件。如果我理解正确,Ionic2 的 Popover 是一个子组件。但是我不知道如何传递 [(ngModel)] 值。

我知道这里看起来很乱......好吧,如果有人足够友好地举一个简单的例子来说明如何将值从 PopOver 传递到页面......

所以...这一切都在一个文件中:

import {Component, Injectable, Input, Output, EventEmitter} from '@angular/core';
import {ViewController, NavController, Popover, Content, Events, NavParams} from 'ionic-angular';
import {CardService} from '../../providers/card-service/card-service';
import {LangService} from '../../providers/lang-service/lang-service';
import {GlobalService} from '../../providers/global-service';

弹出框组件:

@Component({template: `
<ion-list radio-group [(ngModel)]="selected" (ionChange)="loadc(selected)">

<ion-item *ngFor="let chapter of menuArray">
<ion-label>{{chapter.ctitle}}</ion-label>
<ion-radio value="{{chapter.cchap}}" ></ion-radio>
</ion-item>
</ion-list>

`,
providers: [CardService, LangService, GlobalService],
directives: [LangService]
})

@Injectable()
export class ChapterService{
private chpselected : any;
private menuArray: any;
constructor(
private viewCtrl: ViewController,
private navController: NavController,
public cardService: CardService,
public langService: LangService,
public globalService: GlobalService

) {
this.menuArray = [
{
id: 0,
cchap: '01',
ctitle: 'One',
},
{
id: 1,
cchap: '02',
ctitle: 'Two',
},
{
id: 2,
cchap: '03',
ctitle: 'Three',
},
];
///
this.chpselected = this.menuArray[0];

///
};

close() {
this.viewCtrl.dismiss();
}

///-------------------------------
Here I triggers an even when clicking the radio buttons in the popover. I want to call the loadCards() function in the HomePage class below so it returns what is selected and load the correct JSON in the DOM. However I do not how to pass this loadc() value to loadCards().
///-------------------------------

loadc(x){
console.log(x);
this.globalService.nowchap = x;
};


};

这里的另一个类,页面:

@Component({
templateUrl: 'build/pages/home/home.html',
providers: [CardService, LangService, ChapterService, HomePage, GlobalService],
directives: [LangService]
})

@Injectable()
export class HomePage {
///
public cards;
public viewmode : any;
constructor(
private navController: NavController,
public cardService: CardService,
public langService: LangService,
public globalService: GlobalService
//public chapterService: ChapterService
){



this.viewmode ="read";
this.loadCards();
};

/* POPOVER*/
presentPopover(myEvent) {
let popover = Popover.create(ChapterService);
this.navController.present(popover, {
ev: myEvent
});
}

/* Contents are loading here */
public loadCards(x){
console.log("this chp is "+x);
this.cardService.load(x)
.then(data => {
this.cards = data;
});

}

/* LOAD CARDS ENDED*/
///
}

最佳答案

不需要服务,它只会使事情复杂化..

请在此处查看完整的 plunkr - https://plnkr.co/edit/s6lT1a?p=info

它是调用者,传递一个回调...

 presentPopover(myEvent) {
let popover = Popover.create(PopoverComponent,{
cb: function(_data) {
alert(JSON.stringify(_data))
}
});

this.nav.present(popover, {
ev: myEvent
});
}

在弹出窗口中...

constructor(private params: NavParams. /* removed rest for purpose of demo */ ) {
this.callback = this.params.get('cb')
}

public loadc(x) {

this.callback(x)

// Close the popover
this.close();
}

关于typescript - 将 Ionic2 popover ngModel 值传递给父页面组件并调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38489737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com