angular - 离子选择器动态阵列
问题描述
我想在我的应用程序上获得一个带有动态选项的离子选择器,现在是静态的,但是我不知道该怎么做,它只是一个年份选择器,所以我需要一个具有名称和值的数组每个位置。我让我的代码如下:
...
import { PickerOptions } from '@ionic/core';
import { PickerController } from '@ionic/angular';
@Component({
selector: 'app-order-filter',
templateUrl: './order-filter.page.html',
styleUrls: ['./order-filter.page.scss'],
})
export class OrderFilterPage implements OnInit {
framework = '';
constructor(private pickerCtrl: PickerController) {}
...
async showBasicPicker(){
let opts: PickerOptions = {
buttons: [
{
text: 'Cancel',
role: 'cancel'
},
{
text: 'Done'
}
],
columns: [
{
name: 'Year',
options: [
{ text: '2017', value: '2017'},
{ text: '2018', value: '2018'},
{ text: '2019', value: '2019'}
]
}
]
};
let picker = await this.pickerCtrl.create(opts);
picker.present();
picker.onDidDismiss().then(async data => {
let col = await picker.getColumn('framework');
console.log('col: ', col);
this.framework = col.options[col.selectedIndex].text;
});
}
}
解决方案
我认为应该直截了当:
- 在你的类中声明一个变量(属性)
- 在调用“create”之前分配初始值或动态
另请参阅此离子选择器源代码示例(不是 Angular / Ionic,但原理相同),其中使用方法来构造列和选项:
https://github.com/ionic-team/ionic-docs/blob/master/src/demos/api/picker/index.html
例子:
import { PickerOptions } from '@ionic/core';
import { PickerController } from '@ionic/angular';
@Component({
selector: 'app-order-filter',
templateUrl: './order-filter.page.html',
styleUrls: ['./order-filter.page.scss'],
})
export class OrderFilterPage implements OnInit {
pickerColumnOptions; // add this variable, assign initial value before creating picker
framework = '';
constructor(private pickerCtrl: PickerController) {
// assign initial value here in constructor or inside ngOnInit hook:
this.pickerColumnOptions = [
{ text: '2017', value: '2017'},
{ text: '2018', value: '2018'},
{ text: '2019', value: '2019'}
]
}
...
async showBasicPicker(){
let opts: PickerOptions = {
buttons: [
{
text: 'Cancel',
role: 'cancel'
},
{
text: 'Done'
}
],
columns: [
{
name: 'Year',
options: this.pickerColumnOptions
}
]
};
let picker = await this.pickerCtrl.create(opts);
picker.present();
picker.onDidDismiss().then(async data => {
let col = await picker.getColumn('framework');
console.log('col: ', col);
this.framework = col.options[col.selectedIndex].text;
});
}
}
推荐阅读
- java - 在 Spring Boot 应用程序中自动重新加载 Thymeleaf 模板
- r - 使新日期字段以其他日期字段为条件时出错
- visual-studio - 如何在 VS 中自定义 Team Explorer
- python - 如何从熊猫数据框中创建关键字、值对 json?
- docker - Docker容器将文件从本地路径复制到容器中
- git - Git:在合并操作期间从客户端挂钩获取目标和源分支名称
- django - 如何在 Django 的帖子中删除用户的单个评论
- java - 在 Spring Boot 中从多个表中进行选择的通用查询
- postgresql - 如何从 c 扩展内部执行选择语句
- r - 如何在全球环境 R 中订购多个数据框