Vue: изменить класс со значением переменной в setInterval - PullRequest
0 голосов
/ 07 октября 2018

Я учусь Vue JS.Я хочу изменить класс, используя setInterval.Но не может передать изменяющееся значение Method в Computed Property.Через две секунды класс изменится автоматически с измененным значением "changeColor"

Мой код:

HTML:

<div>
    <button @click="startEffect">Start Effect</button>
    <div id="effect" :class="myClass"></div>
</div>

CSS:

.highlight {
  background-color: red;
  width: 200px !important;
}

.shrink {
  background-color: gray;
  width: 50px !important;
}

Vue JS:

new Vue({
    el: '#exercise',
    data: {
        changeColor: false
    },

    methods : {
        startEffect: function() {
            setInterval(function(){
                 this.changeColor = !this.changeColor;
                 //alert(this.changeColor);
            }, 2000);

            //alert(this.changeColor);
        }
    },

    computed: {
        myClass: function() {
            return {
                highlight: this.changeColor,
                shrink: !this.changeColor
          }
        }
    }
})

1 Ответ

0 голосов
/ 07 октября 2018

привязать вашу функцию к компоненту ...

 setInterval(function(){
                 this.changeColor = !this.changeColor;         
            }.bind(this), 2000);

и тогда вы можете сделать ...

<div id="effect" :class="[changeColor?'highlight':'shrink']"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...