Vue не перерисовывает связанный класс при изменении данных - PullRequest
0 голосов
/ 27 июня 2019

Vue не переопределяет связанный класс при изменении данных

Я объявил данные 'isLoading' со значением по умолчанию и связал их в тэге html, а также объявил метод, который изменяет данные.

Пожалуйста, смотрите код ниже!

стиль

  .is-red{
    background: red;
  }
  .is-blue{
    background: blue;
  }

Сценарий

export default {
    created() {
      this.isLoading = true;
    },
    mounted() {

    },
    data() {
      return {
        isloading: true
      };
    },
    methods: {
      changeColor() {
        this.isLoading = !this.isLoading;
        console.log(this.isLoading);
      }
    }
  }

HTML

<h1 v-bind:class="{'is-blue': isLoading, 'is-red': !isLoading }">hello</h1>
<button @click="changeColor">toggle</button>

Я вижу переключение данных между «истиной» и «ложью» в журнале консоли. Однако в DOM ничего не меняется.

в чем проблема?

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Вы объявили свою переменную с именем isloading. И вы объявляете isLoading в созданном. Vue не будет наблюдать изменения динамических переменных.

Для обновления динамических переменных внутри компонента используйте Vue.set() или this.$set().

Ваш скрипт:

export default {
    mounted() {

    },
    data() {
      return {
        isLoading: true
      };
    },
    methods: {
      changeColor() {
          this.isLoading = !this.isLoading;
      }
   }
}
0 голосов
/ 27 июня 2019

попробуйте использовать computed, как показано ниже

script

export default {
    data() {
        return {
            isloading: true
        };
    },
    computed:{
        classes(){
            return this.isloading ? 'is-blue' : 'is-red';
        }
    },
    methods: {
        changeColor() {
            this.isLoading = !this.isLoading;
            console.log(this.isLoading);
        }
    }
}

html

<h1 :class="classes">hello</h1>
<button @click="changeColor">toggle</button>
...