Hostlistener等待
Hostlistener wait
有没有办法在 angular 2 间隔内收听自定义事件?比如每 3 秒一次?
export class scrollDirectiveComponent {
pageNo: any = 1;
@Input() pageNumber: any;
@Output() emitPageNumber: EventEmitter<any> = new EventEmitter();
@HostListener('scroll', ['$event'])
onScroll(event) {
console.log('scrolled', event.target.scrollTop);
let tracker = event.target;
let limit = tracker.scrollHeight - tracker.clientHeight - 5;
console.log(event.target.scrollTop, limit);
if (event.target.scrollTop > limit) {
this.pageNumber++;
this.emitPageNumber.emit(this.pageNumber);
}
}
}
一直监听滚动事件,页码自动递增。等不及了,有没有可以把滚动条换到新位置的?
我一理解你就可以这样做,在你发出的每个滚动事件上,你向 observable 发出,在 observable throttleTime(3000) 上,这意味着只有一个事件会通过。
export class scrollDirectiveComponent {
pageNumber: any = 1;
private scrollEvents = new Subject();
constructor() {
scrollEvents
.throttleTime(3000)
.subscribe(() => {
this.emitPageNumber.emit(++this.pageNumber);
});
}
@Input() pageNumber: any;
@Output() emitPageNumber: EventEmitter<any> = new EventEmitter();
@HostListener('scroll', ['$event'])
onScroll(event) {
console.log('scrolled', event.target.scrollTop);
let tracker = event.target;
let limit = tracker.scrollHeight - tracker.clientHeight - 5;
console.log(event.target.scrollTop, limit);
if (event.target.scrollTop > limit) {
this.scrollEvents.next(true);
}
}
}
其他选项可能是这样的,但我不确定你是否需要尝试,因为我从未做过指令
constructor(private _el: ElementRef){
Observable.fromEvent(_el, 'resize')
.throttleTime(3000)
.subscribe(() => {
this.emitPageNumber.emit(++this.pageNumber);
});
}
有没有办法在 angular 2 间隔内收听自定义事件?比如每 3 秒一次?
export class scrollDirectiveComponent {
pageNo: any = 1;
@Input() pageNumber: any;
@Output() emitPageNumber: EventEmitter<any> = new EventEmitter();
@HostListener('scroll', ['$event'])
onScroll(event) {
console.log('scrolled', event.target.scrollTop);
let tracker = event.target;
let limit = tracker.scrollHeight - tracker.clientHeight - 5;
console.log(event.target.scrollTop, limit);
if (event.target.scrollTop > limit) {
this.pageNumber++;
this.emitPageNumber.emit(this.pageNumber);
}
}
}
一直监听滚动事件,页码自动递增。等不及了,有没有可以把滚动条换到新位置的?
我一理解你就可以这样做,在你发出的每个滚动事件上,你向 observable 发出,在 observable throttleTime(3000) 上,这意味着只有一个事件会通过。
export class scrollDirectiveComponent {
pageNumber: any = 1;
private scrollEvents = new Subject();
constructor() {
scrollEvents
.throttleTime(3000)
.subscribe(() => {
this.emitPageNumber.emit(++this.pageNumber);
});
}
@Input() pageNumber: any;
@Output() emitPageNumber: EventEmitter<any> = new EventEmitter();
@HostListener('scroll', ['$event'])
onScroll(event) {
console.log('scrolled', event.target.scrollTop);
let tracker = event.target;
let limit = tracker.scrollHeight - tracker.clientHeight - 5;
console.log(event.target.scrollTop, limit);
if (event.target.scrollTop > limit) {
this.scrollEvents.next(true);
}
}
}
其他选项可能是这样的,但我不确定你是否需要尝试,因为我从未做过指令
constructor(private _el: ElementRef){
Observable.fromEvent(_el, 'resize')
.throttleTime(3000)
.subscribe(() => {
this.emitPageNumber.emit(++this.pageNumber);
});
}