Mat*_*ood 2 javascript dom-events observable rxjs angular
我想保留与@HostListner该事件中使用的相似的语法,并使用创建一个流fromEvent()。当前滚动不会触发fromEvent订阅。
问题:
如何触发var source = Observable.fromEvent(target, 'window:scroll');?
import { Directive, HostListener } from '@angular/core';
import {Observable} from "rxjs";
import 'rxjs/add/observable/fromEvent';
@Directive({
selector: '[mh-scroll]'
})
export class MhScroll {
lastKnownScrollPosition: number;
ticking: boolean;
constructor() {
this.lastKnownScrollPosition = 0;
this.ticking = false;
}
isElementCloseToTop(target) {
var source = Observable.fromEvent(target, 'window:scroll'); //this never triggers.
var subscription = source.subscribe(
(x) => {
console.log('Next: Clicked!');
},
(err) => {
console.log('Error: %s', err);
},
() => {
console.log('Completed');
});
this.ticking = false;
}
@HostListener('window:scroll', ['$event.target'])
triggeredScroll(target) {
this.lastKnownScrollPosition = window.scrollY;
if (!this.ticking) {
window.requestAnimationFrame(this.isElementCloseToTop.bind(this, target));
}
this.ticking = true;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3039 次 |
| 最近记录: |