2017-03-16 47 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