Hi everyone!
I have an issue with my code. It’s not an error really. It’s just a little bit annoying.
I have an array of objects.
{
name: item.name,
checked: false
}
My template is basically this:
<ion-list>
<ion-item *ngFor="let item of items">
<ion-label>{{item.name}}</ion-label>
<ion-checkbox
color="primary"
(ionChange)="checkItem(item, $event)"
[(ngModel)]="item.checked"
></ion-checkbox>
</ion-item>
Perfect. Everything is pretty straightforward.
checkItem (item, ev) {
this.items.sort((a, b) =>
a.checked < b.checked ? -1 : a.checked > b.checked ? 1 : 0
);
}
What happens is that, whenever the view is not at the very top of the page, and I trigger the checkItem () function, the item.checked gets the oposite value. Therefore, as is sorted out, it is carried at the bottom of the page. What is deeply annoying is that the view is carried at the bottom as well.
If you want to try it out, here is a dummy long array so you can test it out:
items = [
{
name: 'First',
checked: false
},
{
name: 'Sec',
checked: false
},
{
name: 'Third',
checked: false
},
{
name: 'Fourth',
checked: false
},
{
name: 'Hello',
checked: false
},
{
name: 'World',
checked: false
},
{
name: 'Some',
checked: false
},
{
name: 'words',
checked: false
},
{
name: 'to',
checked: false
},
{
name: 'fill',
checked: false
},
{
name: 'this',
checked: false
},
{
name: 'Example',
checked: false
},
{
name: 'Hey',
checked: false
},
{
name: 'You',
checked: false
},
{
name: 'Are',
checked: false
},
{
name: 'Not',
checked: false
},
{
name: 'Reading',
checked: false
},
{
name: 'This',
checked: false
},
{
name: 'Right',
checked: false
},
{
name: '?',
checked: false
},
]
Thanks in advance!
