如果尚未确认,我如何知道当前在多列离子选择器的列中选择了什么元素?
How can I know what element is currently selected in a column of a multi-column-ion-picker, if it hasn't been confirmed yet?
问题是,我制作了一个带有 2 列的离子选择器。在第一列中只有 2 个选项可供选择,并且根据当前在该列中选择的内容,第二列的值应该更改。所以我的问题是,如果我无法确认,我如何才能找出第一列中当前选择的内容?
第二列应该从一个包含值的数组中获取信息。
请不要批评我下面代码中的变量名,我稍后可能会更改它们。
async showMultiColumnPicker(id) {
if (this.disabledis[id - 6] !== true) {
const opts: PickerOptions = {
buttons: [
{
text: 'Cancel',
role: 'cancel'
},
{
text: 'Done',
role: 'confirm',
handler: async () => {
const vari1 = await
this.picker_cancer.getColumn(this.pickerbois[id].name);
const vari2 = await this.picker_cancer.getColumn('2nd row');
this.selectedvalue = vari1.options[vari1.selectedIndex].text +
' ' + vari2.options[vari2.selectedIndex].text;
this.selected[id] = this.selectedvalue;
}
}
],
columns: [
{ //1st row
name: this.pickerbois[id].name,
options: this.pickerbois[id].options[0]
},
{ // How can you know which option is
// currently selected in the first column?
name: '2nd row',
options: this.pickerbois[id].options[1]
//options: this.pickerbois[id].options[2] in case of the second
//attribute in the 1st row being selected
}
]
};
const picker = await this.pickerCtrl.create(opts);
this.picker_cancer = picker;
picker.present();
}
}
好的,所以我认为日期时间选择器会在一个月中的几天执行此操作,所以这一定是可能的。
深入研究代码是回答问题的好方法,in the datetime.tsx 文件我发现了这个:
picker.addEventListener('ionPickerColChange', async (event: any) => {
const data = event.detail;
const colSelectedIndex = data.selectedIndex;
const colOptions = data.options;
const changeData: any = {};
changeData[data.name] = {
value: colOptions[colSelectedIndex].value
};
this.updateDatetimeValue(changeData);
picker.columns = this.generateColumns();
});
一个你能处理的绝密事件,解决你的问题!
我认为这是文档中的一个错误,但从 more digging around 和这个新信息看来,ionPickerColChange
被标记为 @internal
。
这意味着它可能会在未来发生变化并且不受官方支持。
似乎在某些情况下可能存在一些显示问题,可能会阻止他们制作 public api 的这一部分,所以看看你的表现如何,祝你好运!
我在研究过程中注意到的最后一件事,this forum thread 最后有一个 forceUpdate
调用:
picker.forceUpdate();
如果遇到问题,请尝试。
问题是,我制作了一个带有 2 列的离子选择器。在第一列中只有 2 个选项可供选择,并且根据当前在该列中选择的内容,第二列的值应该更改。所以我的问题是,如果我无法确认,我如何才能找出第一列中当前选择的内容?
第二列应该从一个包含值的数组中获取信息。 请不要批评我下面代码中的变量名,我稍后可能会更改它们。
async showMultiColumnPicker(id) {
if (this.disabledis[id - 6] !== true) {
const opts: PickerOptions = {
buttons: [
{
text: 'Cancel',
role: 'cancel'
},
{
text: 'Done',
role: 'confirm',
handler: async () => {
const vari1 = await
this.picker_cancer.getColumn(this.pickerbois[id].name);
const vari2 = await this.picker_cancer.getColumn('2nd row');
this.selectedvalue = vari1.options[vari1.selectedIndex].text +
' ' + vari2.options[vari2.selectedIndex].text;
this.selected[id] = this.selectedvalue;
}
}
],
columns: [
{ //1st row
name: this.pickerbois[id].name,
options: this.pickerbois[id].options[0]
},
{ // How can you know which option is
// currently selected in the first column?
name: '2nd row',
options: this.pickerbois[id].options[1]
//options: this.pickerbois[id].options[2] in case of the second
//attribute in the 1st row being selected
}
]
};
const picker = await this.pickerCtrl.create(opts);
this.picker_cancer = picker;
picker.present();
}
}
好的,所以我认为日期时间选择器会在一个月中的几天执行此操作,所以这一定是可能的。
深入研究代码是回答问题的好方法,in the datetime.tsx 文件我发现了这个:
picker.addEventListener('ionPickerColChange', async (event: any) => {
const data = event.detail;
const colSelectedIndex = data.selectedIndex;
const colOptions = data.options;
const changeData: any = {};
changeData[data.name] = {
value: colOptions[colSelectedIndex].value
};
this.updateDatetimeValue(changeData);
picker.columns = this.generateColumns();
});
一个你能处理的绝密事件,解决你的问题!
我认为这是文档中的一个错误,但从 more digging around 和这个新信息看来,ionPickerColChange
被标记为 @internal
。
这意味着它可能会在未来发生变化并且不受官方支持。
似乎在某些情况下可能存在一些显示问题,可能会阻止他们制作 public api 的这一部分,所以看看你的表现如何,祝你好运!
我在研究过程中注意到的最后一件事,this forum thread 最后有一个 forceUpdate
调用:
picker.forceUpdate();
如果遇到问题,请尝试。