2016-12-13 3 views
0

Я хотел бы использовать переменную, которая через некоторое время после последнего изменения была отброшена (или аннулирована). Существует ли такая вещь?Существуют ли изменчивые (временные) переменные?

Мой сценарий использования следующий: сервер веб-сервера будет нажимать обновления на Vue.js vm (переменная, в основном), которая вызовет изменение в DOM. Я хотел бы, чтобы это изменение было отменено (обновленный элемент скрыт) через некоторое время после последней модификации.

Планируемая реализация тяготеет вокруг watch который будет обновлять флаг на изменение переменной vm выше, периодически проверяется с помощью setInterval, который в свою очередь, изменить vm, чтобы вызвать скрытие когда флаг достигает определенного времени.

Хотя это выполнимо, для меня это не очень умно.

Если бы был способ «погасить» переменную до null, было бы легко вызвать статус видимости элемента DOM.

Есть ли такой механизм?

ответ

1

Способ, которым я хотел бы сделать это, - использовать timeout, который устанавливает ваш флаг выставки в false через заданный интервал. Самым простым решением было бы объявить таймер data, поэтому он может быть сброшен и перезапущен, если новое обновление будет получено, который вы можете разместить внутри сторожа:

var vm = new Vue({ 
    el: '#app', 
    watch: { 
    myVar() { 
     // Make sure we are showing the new value 
     this.show = true; 

     // Clear the timer because myVar has been updated 
     clearTimeout(this.timer); 

     this.timer = setTimeout(() => { 
     this.show = false; 
     }, 2000); // Now start the timer again 
    } 
    }, 
    data: { 
    show: false, 
    myVar: "", 
    timer: "" 
    } 
}); 

Вот JSFiddle: https://jsfiddle.net/w4jjey2t/

Смежные вопросы