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