2017-03-16 4 views
1

슬라이더 변경 이벤트가 트리거 될 때 모델을 업데이트하고 디 바운스 시간을 (너무 많은 레이아웃을 강조하지 않기 위해 모델을 새로 고친 대규모 차트에서 사용하기 때문에 업데이트하고 싶습니다. 250ms마다).KendoUI Angular2 - 디 바운스 슬라이더

HTML

<kendo-slider [min]="1" 
        [max]="5" 
        [(ngModel)]="model" 
        (valueChange)="functionToBeDebounced($event)"> 
    </kendo-slider> 

TS

public functionToBeDebounced(value) { 
     this.model = value; 
     this.notification.emit(this.model); 
} 

가 이런 식으로 뭔가를 할 수 있나요 :

이 시나리오인가? 슬라이딩이 끝난 때만

<kendo-slider [min]="1" 
        [max]="5" 
        [(ngModel)]="model" 
        (valueChange)="functionToBeDebounced($event)" 
        [debounce]="500" > 
    </kendo-slider> 

결과 functionToBeDebounced 호출된다.

답변

3

rxjs/Subject를 사용하여 원하는 모든 것을 디 바운스 할 수 있습니다.

import { Subject } from 'rxjs/Subject'; 

private debouncer: Subject<any> = new Subject(); 

ngOnInit(){ 
    this.debouncer.debounceTime(500).subscribe(event => { 
    this.functionToBeDebounced(event); 
    }); 
} 

private callDebouncer(event){ 
    this.debouncer.next(event); 
} 

(valueChange)="callDebouncer($event)" 
+0

잘 작동합니다, 감사합니다! 반응 적 접근법을 완전히 잊었습니다.) – Dyd666

+0

좀 더 일반적인 접근 방식을 사용할 수 있습니까? 예를 들어, 디 바운싱이 필요한 컨트롤이 두 개 이상인 경우입니다. – Misi

+0

@Misi 각 컨트롤마다 하나의 데비안을 사용하거나 하나의 데비안을 사용하지만, 어떤 컨트롤이'callDebouncer' 함수 내에서 사용되는지 추적하십시오. – Ploppy