2016-06-16 8 views
0

値が観測可能にバインドされたスライダがあり、すべて正常に動作します。NativeScriptスライダの観測後にイベントを実行すると、変更が中止されます

スライダにObservable.propertyChangeEventを設定しましたので、オブザーバブルが変更されたとき(ユーザーがスライダをドラッグしたとき)にイベントが表示されます。

slider.on(Observable.propertyChangeEvent, function(data: PropertyChangeData) { 
     console.log('EventName: ' + data.eventName); 
     console.log('PropName: ' + data.propertyName); 
     console.log('Value: ' + data.value); 
}) 

は、私が欲しい:

I設定した時間内に変更し、観察が終了します一度イベントを実行したいと思います

(例:1000ミリ秒)。観測を再開する場合は、このイベントを停止する方法です。ユーザーがUIの他の部分を更新するためにスライダーを目的地に設定すると、処理を行う必要があります。したがって、ユーザーが再度変更を開始した場合、パフォーマンス上の理由から、その処理を停止してから、ユーザーがスライダーを調整した後に変更を実行することをお勧めします。

私はUnderscore.js _.debounceを使用して回答の提案で変数を設定し、タイマーを開始しますが、それは私のために今をクリックすると、本当にではありません:)

アップデート()

let underscore = require("underscore"); 
function debouncedValue(data: PropertyChangeData) { 
     console.log('NewSlider value: ' + data.value); 
} 

let debouncedSlider = underscore.debounce(debouncedValue, 800); 

slider.on(Observable.propertyChangeEvent, debouncedSlider); 
を考えています

答えて

0

UnderscoreJSには、ここで達成しようとしているものとまったく同じ、debounceという機能があります。ドキュメントから

_.debounce(function, wait, [immediate]) 

ミリ秒を待つまで、その 実行を延期する渡された関数の新しいデバウンスバージョンは、それが呼び出された最後 時間から経過した作成して返します。 。入力の到着が停止した後にのみ が発生するような動作を実装する場合に便利です。たとえば、 のMarkdownコメントのプレビューのレンダリング、 のサイズ変更をやめた後のレイアウトの再計算などがあります。

+0

私はデバウンスを考えていましたが、私の心は崩れました。悪いことを試して、すべてが良いかどうかを知らせてください。前もって感謝します。 –

関連する問題