我最近想知道为什么不能通过修改ionScroll.subscribe()中的 [(ngModel)] 来更改 ionic v3 中的活动段。我将分段内容堆叠在彼此下方。因此,当我的滚动位置超过特定位置时,我正在使用“锚滚动”按钮并希望它们反之亦然。这是我的代码:
<ion-segment [(ngModel)]="segData">
<ion-segment-button (click)="this.scrollToCard('card1')" value="seg1">Card1</ion-segment-button>
<ion-segment-button (click)="this.scrollToCard('card2')" value="seg2">Card2</ion-segment-button>
</ion-segment>
<div [ngSwitch]="segData">
<ion-list *ngSwitchCase="'seg1'">
<ion-item>
<ion-card #card1>...</ion-card>
</ion-item>
<ion-item>
<ion-card #card2>...</ion-card>
</ion-item>
</ion-list>
</div>
例子.ts
segData: string;
export class ShowCar
{
@ViewChild(Content) content : Content;
...
constructor(...)
{
this.segData = "seg1";
}
...
ionViewDidLoad()
{
//This would work
//setTimeout( () => { this.segData = "seg2"; }
//Inside ionScroll.subscribe() it is not working
//Even if i wrap this into "setTimeout"
this.content.ionScroll.subscribe( scrollData =>
{
if( scrollData.scrollTop > seg1PosFromTop)
this.segData = "seg2";
});
}
...
}
我尝试了很多东西,可能会发生一些疯狂的事情。例如,由于最新的 Angular 允许直接使用 DOM 中的元素,因此我在元素上触发了点击事件。然后该段很快似乎处于活动状态,并且在一毫秒后,前一个段再次变为活动状态。我也在玩只是改变css类。但是,当单击分段按钮时,我必须捕获它,删除所有segment-button segment-active
类并将其手动添加到所选的类中。