@Sashjkeee
f-e

Как в v-model добавить computed?

Вот такой выбор периода.
Кликаешь по нему и дата должна заполняться в датапикер
<input v-model="selectedPeriod"
            :id="period.id" :value="period.id"
            type="radio" name="period"
            class="policy-form__label-radio" />


Вот сам датапикер
<el-date-picker
          v-model="dateStart"
          type="date"
          :clearable="false"
          placeholder="Выберите дату">
</el-date-picker>

Вот дата
data: () => ({
    periodStart: new Date(),
    periodEnd: new Date(),
    selectedFilter: "all",
    selectedPeriod: "today"
  }),

А вот, что лежит в computed
dateStart() {
      return moment().subtract(1, this.selectedPeriod).toDate()
    }


Эта часть кода работает. то есть кликаю по периодам и датапикере меняется
Но вот, когда хочу в самом датапикере дату поменять - пишет, что
Computed property "dateStart" was assigned to but it has no setter
  • Вопрос задан
  • 9237 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
У computed свойств можно делать (а вам в данной ситуации и нужно) и сеттеры:

dateStart: {
  get() {
    return moment().subtract(1, this.selectedPeriod).toDate();
  },
  set(value) {
    // ну, тут вам виднее, какой должен код быть
  },
},
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
Ну как бы достаточно ясно намекают, что идет присвоение к dateStart, но неопределен setter, должно быть что-то типа:

dateStart: {
      get: function () {
       return moment().subtract(1, this.selectedPeriod).toDate()
      },
      set: function (v) {
        // set here
      }
    }
Ответ написан
Ваш ответ на вопрос

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

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