mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-20 12:29:55 +08:00
fix(select): firing events properly in popover interface
This commit is contained in:
@ -8,6 +8,7 @@ export interface SelectPopoverOption {
|
|||||||
value: string;
|
value: string;
|
||||||
disabled: boolean;
|
disabled: boolean;
|
||||||
checked: boolean;
|
checked: boolean;
|
||||||
|
handler?: Function;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @hidden */
|
/** @hidden */
|
||||||
@ -30,6 +31,10 @@ export class SelectPopover implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public set value(value: any) {
|
public set value(value: any) {
|
||||||
|
let checkedOption = this.options.find(option => option.value === value);
|
||||||
|
if (checkedOption && checkedOption.handler) {
|
||||||
|
checkedOption.handler();
|
||||||
|
}
|
||||||
this.viewController.dismiss(value);
|
this.viewController.dismiss(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,7 +301,11 @@ export class Select extends BaseInput<any> implements OnDestroy {
|
|||||||
text: input.text,
|
text: input.text,
|
||||||
checked: input.selected,
|
checked: input.selected,
|
||||||
disabled: input.disabled,
|
disabled: input.disabled,
|
||||||
value: input.value
|
value: input.value,
|
||||||
|
handler: () => {
|
||||||
|
this.value = input.value;
|
||||||
|
input.ionSelect.emit(input.value);
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
overlay = new Popover(this._app, SelectPopover, {
|
overlay = new Popover(this._app, SelectPopover, {
|
||||||
@ -368,12 +372,6 @@ export class Select extends BaseInput<any> implements OnDestroy {
|
|||||||
|
|
||||||
overlay.onDidDismiss((value: any) => {
|
overlay.onDidDismiss((value: any) => {
|
||||||
this._fireBlur();
|
this._fireBlur();
|
||||||
|
|
||||||
if (this.interface === 'popover' && value) {
|
|
||||||
this.value = value;
|
|
||||||
this.ionChange.emit(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
this._overlay = undefined;
|
this._overlay = undefined;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user