Задать вопрос
@andreysuha
Что то знаю

Почему не перещитывается computed property?

Есть такое вычисляемое свойство

formattedDate() {
            let date = this.date ? this.date : this.value;
            return date ? moment(date).format(this.getFormat) : date;
        }


date это свойство в data, при его изменении formattedDate не перещитываеться хотя само свойство date изменяется

https://codesandbox.io/s/vue-template-mqyo8

когда второй раз выбираешь дату то свойство не перещитывается. Само свойство в components/date-picker/index.vue

UPD если закрыть/открыть календарь (дважды нажать на инпут) то дату опять можно выбрать, но опять только один раз
  • Вопрос задан
  • 472 просмотра
Подписаться 1 Простой 4 комментария
Решения вопроса 1
dasnein
@dasnein
На самом деле, очень странно, что не работает ни при выносе из computed property в метод, ни при использовании this.$set. И forceUpdate не помог.

Единственный вариант, как получилось исправить – это завести реактивный проп formattedDate и туда ложить отформатированную дату в методе setSelectedDate.

Как-то так
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Shtucer
От слова "shit"?
Ответ написан
@veremii
говнокодю на js
Все очень интересно. Смею предположить что вы в переменной this.date храните объект, тем самым вы возвращаете ссылку! На объект this.date видимо.

Попробуйте написать как нибудь типа let date = this.date ? JSON.parse(JSON.stringify(this.date)) : ...
Если сработает как ожидалось - то у вас ошибка в архитектуре и нужно подумать над ней.

Также computed свойства кешируются, не забывайте об этом.
Ответ написан
Ваш ответ на вопрос

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

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