VueJS - счетчик не увеличивается при нажатии на кнопку - PullRequest
0 голосов
/ 05 мая 2019

Я изучаю VueJS с Максимилианом Шварцмюллером в его курсе VueJS по Удеми, и когда я запускаю его пример на своей локальной машине, это не увеличивает мою переменную-счетчик.

<div id="app">
  <button :click="increase">Click me</button>
  <p>{{ counter }}</p>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js"></script>
<script>
  new Vue({
    el: '#app',
    data: {
      counter: 0
    },
    methods: {
      increase() {
        return this.counter++
      }
    }
  })
</script>

Есть идеи, что не так с кодом?

Большое спасибо.

Ответы [ 5 ]

1 голос
/ 05 мая 2019

Data должна быть функцией:

<script>
  new Vue({
    el: '#app',
    data() {
      return {
        counter: 0
      }
    },
    ...
  })
</script>
0 голосов
/ 06 мая 2019

Вы должны использовать символ @ для событий вместо :, который используется для привязки реквизита.

<button @click="increase">Click me</button>
0 голосов
/ 06 мая 2019

На самом деле проблема была в следующем:

<button :click="increase">Click me</button>

Я использовал неправильный синтаксис короткой руки.Вместо этого мне пришлось использовать знак @ (для событий).

<button @click="increase">Click me</button>

Я смотрел этот пример здесь на CodePen и заметил, что их объект data не является функция .Должен ли объект data быть функцией?Есть ли у них преимущества, о которых я не знаю?

Я сейчас новичок в Vue и учусь на курсе Макса по Udemy.Большое спасибо.

0 голосов
/ 05 мая 2019

Ваш скрипт будет выполнен до того, как ваш документ будет готов, поэтому Vue не найдет ваш элемент для монтирования.

Также, как уже упоминалось, ваше свойство data должно быть функцией, чтобы сделать каждый экземпляр уникальным.объект данных.

document.addEventListener('DOMContentLoaded', mountVue);

function mountVue() {
  new Vue({
    el: '#app',

    data() {
      return {
        counter: 0
      };
    },

    methods: {
      increase() {
        return this.counter++;
      }
    }
  });
}
0 голосов
/ 05 мая 2019

попробуйте это:

data: () => ({
   counter: 0,
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...