2017-06-29 64 views
-1

我有一个离子范围(单选按钮),我正在获取数据并推送它,以便我可以在mongodb中搜索该数据并将其响应给客户端。但是无论何时用户将其拖动(无让它立即)它需要所有的数据,并在mongodb n次搜索,使其变得更慢。我想要做的是放置一个setTime,以便大约1秒后用户放下按钮,它会发送数据,而不是瞬时Angular2 http.post setTimeout

的Html

<ion-range min="0" max="200" pin="true" [(ngModel)]="distance" color="secondary" (ngModelChange)="Change()"> 
    <i class="fa fa-map-marker" range-left aria-hidden="true"></i> 
    <i class="fa fa-map-marker" style="font-size:25px;" range-right aria-hidden="true"></i> 

    </ion-range> 

TS

Change() { 
var data = { 
    distance: this.distance, 
    lat: this.lat1, 
    long: this.long1 
} 

this.http.post('http://localhost:xxxx/api/xxx', data) 
    .map(res => res.json()) 
    .subscribe(data => { 
    this.distanceArray = data; 
    }) 


} 

我猜在之间}和)我需要把setTimeint,但我从来没有用过它。你的想法是什么。

谢谢

回答

0

ion-range有一个输入属性debounce这是

多久,以毫秒为单位,等待在范围值每次更改后触发ionChange事件 。默认为0。

Ionic Range API documentation

我强烈建议您使用,而不是直接从分量上做的http请求服务。

编辑

使用debounceionChange代替ngModelChange

<ion-range min="0" max="200" pin="true" debounce="1000" [(ngModel)]="distance" color="secondary" (ionChange)="Change($event)"> 
....... 
</ion-range> 
+0

是的,你是对的,但我猜是因为ngModelChange抖不工作这仍使http.post瞬时@Shanil费尔南多 – gnncrdm