@ixotep

Как обработать значение radio после выбора во vuejs?

Всем Хай!
Пытаюсь сделать рейтинг статьи и записать его в базу, но! переменная изначально пустая и когда исполняется процедура она ещё пустая, а присваивается значение только после исполнения процедуры, т.е. как бы отрабатывает с запозданием: изначально 0, выбираем 3 -> в переменной 0, выбираем 5 -> в переменной 3 и т.д. подскажите как это лучше сделать?? Код:
<input type="radio" v-bind:name="rating" id="rating-5" v-bind:value="5" v-model.number="rating"
             v-on:click="submitRating">
      <label for="rating-5"></label>
      <input type="radio" v-bind:name="rating" id="rating-4" v-bind:value="4" v-model.number="rating"
             v-on:click="submitRating">
      <label for="rating-4"></label>
      <input type="radio" v-bind:name="rating" id="rating-3" v-bind:value="3" v-model.number="rating"
             v-on:click="submitRating">
      <label for="rating-3"></label>
      <input type="radio" v-bind:name="rating" id="rating-2" v-bind:value="2" v-model.number="rating"
             v-on:click="submitRating">
      <label for="rating-2"></label>
      <input type="radio" v-bind:name="rating" id="rating-1" v-bind:value="1" v-model.number="rating"
             v-on:click="submitRating">
      <label for="rating-1"></label>


NUXT:
methods: {
      async submitRating(rating) {
        let formData = new FormData();
        for (let data in this.post) {
          formData.append(data, this.post[data]);
        }
        console.log(rating);

        let dataPost = this.post;
        dataPost.rating = +dataPost.rating + this.rating;
        console.log(dataPost.rating);
        try {
          let response = await this.$axios.$put('/posts/' + this.post.slug + '/', dataPost);
          console.log(response)
        } catch (e) {
          console.log(e.toString())
        }
      }
    }
  • Вопрос задан
  • 262 просмотра
Решения вопроса 1
@HikariNoSekai
Middle Vue.js Developer
ixotep Старайтесь не использовать :value (v-bind:value) + v-model. Вместо этого используйте getter + setter в computed свойстве. Или вообще просто присвойте значение value по умолчанию без bind
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
IvanTabakerka
@IvanTabakerka
Чистокровный говнокодер
Асинхронная функция выполнилась быстрее, чем vue скоммуниздил значение поля. Но это всё что я понял :D
Ответ написан
Комментировать
@ixotep Автор вопроса
может надо как то отложено запускать?)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы