从组件中选择所有选中的项目 - Multi select Check box
Pick the all checked items from the component - Multi select Check box
我有 多select 复选框 列表,如下所示。你能告诉我如何从组件 (.ts
) 中选择所有选中的项目吗?
.html:
<ion-list>
<ion-item *ngFor="let i of inputs">
<ion-label>{{i.display}}</ion-label>
<ion-checkbox name="{{i.label}}" [(ngModel)]="i.checked"></ion-checkbox>
</ion-item>
</ion-list>
.ts:
this.inputs=[
{
"encode": "1",
"display": "en falls asleep without a caregiver in the room",
"label": "uiFallsAsleepUnassistedBedTime",
"checked": false
},
{
"encode": "2",
"display": "During breastfeeding",
"label": "uiBreastFeedBedTime",
"checked": false
},
{
"encode": "3",
"display": "Being rocked or held (in arms or baby sling/carrier)",
"label": "uiSlingBedTime",
"checked": false
},
{
"encode": "4",
"display": "In motion (stroller, car, etc.)",
"label": "uiInMotionBedTime",
"checked": false
},
]
OP 的反馈:下面一个对我有用。
this.inputs.filter(opt => opt.checked).map(opt => opt.label);
原答案:
我认为您应该将 i.checked
而不是 i. encode
绑定到 ion-checkbox
。然后你可以使用 Array.filter
来获取选中的项目。
var inputs = [{
"encode": "1",
"display": "en falls asleep without a caregiver in the room",
"label": "uiFallsAsleepUnassistedBedTime",
"checked": false
},
{
"encode": "2",
"display": "During breastfeeding",
"label": "uiBreastFeedBedTime",
"checked": true
},
{
"encode": "3",
"display": "Being rocked or held (in arms or baby sling/carrier)",
"label": "uiSlingBedTime",
"checked": false
},
{
"encode": "4",
"display": "In motion (stroller, car, etc.)",
"label": "uiInMotionBedTime",
"checked": true
},
]
console.log(inputs.filter(function(item){ return item.checked === true; }));
如果您有一个模型项状态检查变量,那么您可以向该属性添加一个绑定
<ion-checkbox name="{{i.label}}" [(ngModel)]="i.encode" [checked]="i.checked" (change)="change(i, $event)"></ion-checkbox>
.ts代码:
checked = [];
change(item, event) {
var index = this.inputs.map(i => i.encode).indexOf(item.encode);
if(event.target.checked) {
if(index === -1) {
this.checked.push(item);
}
} else {
if(index !== -1) {
this.checked.splice(index, 1);
}
}
}
我有 多select 复选框 列表,如下所示。你能告诉我如何从组件 (.ts
) 中选择所有选中的项目吗?
.html:
<ion-list>
<ion-item *ngFor="let i of inputs">
<ion-label>{{i.display}}</ion-label>
<ion-checkbox name="{{i.label}}" [(ngModel)]="i.checked"></ion-checkbox>
</ion-item>
</ion-list>
.ts:
this.inputs=[
{
"encode": "1",
"display": "en falls asleep without a caregiver in the room",
"label": "uiFallsAsleepUnassistedBedTime",
"checked": false
},
{
"encode": "2",
"display": "During breastfeeding",
"label": "uiBreastFeedBedTime",
"checked": false
},
{
"encode": "3",
"display": "Being rocked or held (in arms or baby sling/carrier)",
"label": "uiSlingBedTime",
"checked": false
},
{
"encode": "4",
"display": "In motion (stroller, car, etc.)",
"label": "uiInMotionBedTime",
"checked": false
},
]
OP 的反馈:下面一个对我有用。
this.inputs.filter(opt => opt.checked).map(opt => opt.label);
原答案:
我认为您应该将 i.checked
而不是 i. encode
绑定到 ion-checkbox
。然后你可以使用 Array.filter
来获取选中的项目。
var inputs = [{
"encode": "1",
"display": "en falls asleep without a caregiver in the room",
"label": "uiFallsAsleepUnassistedBedTime",
"checked": false
},
{
"encode": "2",
"display": "During breastfeeding",
"label": "uiBreastFeedBedTime",
"checked": true
},
{
"encode": "3",
"display": "Being rocked or held (in arms or baby sling/carrier)",
"label": "uiSlingBedTime",
"checked": false
},
{
"encode": "4",
"display": "In motion (stroller, car, etc.)",
"label": "uiInMotionBedTime",
"checked": true
},
]
console.log(inputs.filter(function(item){ return item.checked === true; }));
如果您有一个模型项状态检查变量,那么您可以向该属性添加一个绑定
<ion-checkbox name="{{i.label}}" [(ngModel)]="i.encode" [checked]="i.checked" (change)="change(i, $event)"></ion-checkbox>
.ts代码:
checked = [];
change(item, event) {
var index = this.inputs.map(i => i.encode).indexOf(item.encode);
if(event.target.checked) {
if(index === -1) {
this.checked.push(item);
}
} else {
if(index !== -1) {
this.checked.splice(index, 1);
}
}
}