Bir ekranın Y konumunu izlediğim ve bu bilgilerle bir olayı tetiklediğim (çok fazla yardıma sahip), aşağıdaki yönergeyi oluşturdum.EventEmitter, Chrome/Safari üzerinde çalışmaz
import {Directive, Output, EventEmitter} from "angular2/core";
@Directive({
selector: '[track-scroll]',
host: {'(window:scroll)': 'track($event)'},
})
export class TrackScrollDirective {
@Output('pageYPositionChange') pageYPositionChange: EventEmitter<any> = new EventEmitter();
track($event: any) {
this.pageYPositionChange.emit($event.pageY);
}
}
Ve bileşeninde halinde dinlemek için çalışıyor şu şekildedir:
import {TrackScrollDirective} from "../directives/track-scroll.directive";
@Component({
selector: 'app-header',
moduleId: module.id,
templateUrl: './app-header.component.html',
directives: [Collapse, DROPDOWN_DIRECTIVES, ROUTER_DIRECTIVES, TrackScrollDirective]
})
export class AppHeader {
public isCollapsed:boolean = false;
pageY: number = 0;
constructor (
public authService: AuthenticationService
) {}
onPageYChange(pageY: number) {
this.pageY = pageY;
console.debug("PageY Pos ", pageY);
}
}
o bileşenin şablonda Elimizdeki:
<nav class="navbar navbar-default navbar-fixed-top top-navbar" track-scroll (pageYPositionChange)="onPageYChange($event)" [ngClass]="{floating: pageY > 10}">
Her şey FF çekici bir şekilde çalıştığını, ama bununla ilgili, başka hiçbir yerde değil. (safari, krom denedi)
Neler eksik? Benim tek düşünce ben
Görünüşe $event.pageY
krom var olmayan yanlış EventEmitter
UPDATE kullanıyorum ... ve aslında hiç sayfa konumu hakkında herhangi bir bilgi yoktur olmasıdır. Onu nereden alabilirim?
'track' yöntemi safari ve krom söz konusu olur mu? Bu tarayıcılarda kaydırma olayı tetiklenirse ... –
Parça işlevi çağrıldığında konsolun $ olayını çalıştırmayı deneyin. – philoniare
http://stackoverflow.com/a/36468377/217408 adresinde gösterilen 'document.body.scrollTop' benzeri nedir? –