debounceTime
позволяет буферизовать события и обрабатывать последний только через некоторое время.
Это полезно в контексте входов, но должно быть определено на наблюдаемом, которое вызывает событие не на том, что создано для HTTP-запроса.
Ниже приведен пример управления, связанного с входом, который использует оператор debounceTime
:
@Component({
(...)
template: `
`
})
export class MyComponent {
constructor() {
this.ctrl = new Control();
this.ctrl.valueChanges
.debounceTime(500)
.distinctUntilChanged()
.switchMap((value: string) => {
// Get data according to the filled value
return this.service.getData(entry);
})
.subscribe(data => {
// Update the linked list
this.list = data;
});
}
}
Эта статья также может заинтересовать вы:
Следуя комментарию микроникса, вот дополнительная ссылка:
Чтобы изменить визуальное состояние элемента, вы можете сделать это из кода на странице, например:
VisualStateManager.GoToState(yourViewElement, yourViewElementState);
Однако, не самый лучший совет, но вы можете подписаться изменения в вашей модели представления, из вашего code.behind, а затем вызовите VisualStateManager.
Пример
YourPage()
{
viewModel.PropertyChanged += FooChanged;
}
public void FooChanged()
{
if (!args.PropertyName.Equals("YourProperty"))
{
VisualStateManager.GoToState(yourViewElement, yourViewElementState);
}
return;
}