我正在研究Ionic 3的项目。有不同的菜单。在选择菜单时,我只是发布一个事件并更改页面上数组的值。一切正常,但当页面数据发生变化时,滚动条仍保留在前一个位置。我希望每当我从菜单中选择一个项目时,页面应该滚动到顶部。
为此,我正在使用它 -
正在发布选择菜单项的事件。该代码在app.component.ts
上有效onSelectCourse(slug){
const loading = this.loadingCtrl.create({
content: 'Loading Articles'
});
loading.present();
if(slug == 'all'){
this.postsProvider.listPosts(1)
.subscribe(data => {
this.events.publish('posts:listed', data);
loading.dismiss();
this.menuCtrl.close();
});
}
else{
this.postsProvider.listPostsByCategory(slug, 1)
.subscribe(data => {
this.events.publish('posts:listed', data);
loading.dismiss();
this.menuCtrl.close();
});
}
}
在HomePage订阅活动(home.ts) -
export class HomePage {
posts: any = [];
pages: number;
page: number;
category: string;
@ViewChild(Content) content: Content;
constructor(
private events: Events,
private postsProvider: PostsProvider,
private changeRef:ChangeDetectorRef) {
this.events.subscribe('posts:listed', (data) => {
this.posts = data.posts;
this.pages = data.pages;
this.page = 1;
this.category = data.category;
this.changeRef && this.changeRef.detectChanges();
this.content.scrollToTop();
});
}
}
但是在选择项目时,我收到此错误
答案 0 :(得分:1)
由于SIGUSR2
尚未加载,您无法在this.content.scrollToTop()
内访问它(例如constructor()
)。
您可以在此处使用dom
生命周期事件。
ionViewDidEnter()