@HitTheNails

Как заставить работать v-if и вложенные вычисляемые свойства?

Здравствуйте.
В компоненте через computed properties подгружаются данные с помощью геттера из VUEX.
Затем одно из вложенных свойств через v-model привязывается к чекбоксу, если смотреть по devtools то все нормально, все изменяется.
Но при попытке прописать v-if с использованием этого свойства, при его изменении ничего в DOM не меняется.
Примерный код:
computed: {
            data: {
                get () {
                    return this.$store.getters['banks/socio_demographic_portraits_template'];
                },
                set (value) {
                    this.$store.commit("banks/updateSocioDemographicPortraitsTemplate", value);
                }
            },
}

<div class="col-sm-6" v-if="data.is_unified==false">
                        <multiposition-switch
                                v-model="data.gender_id"
                                :dictionary="genders">
                        </multiposition-switch>
</div>

В чем проблема и как это обойти?
  • Вопрос задан
  • 763 просмотра
Решения вопроса 2
@Demin_Nick
Тоже столкнулся с этим, но нашел ответ:
https://medium.com/devschacht/%D1%80%D0%B5%D0%B0%D...

в твоем случае нужно присваивать новое значение через Vue.set
Vue.set(checkboks, 'state', 1)

надеюсь поможет
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега Vue.js
одно из вложенных свойств через v-model привязывается к чекбоксу
<...>
при попытке прописать v-if с использованием этого свойства, при его изменении ничего в DOM не меняется

Раз ничего не меняется, значит, на самом деле этого свойства изначально нет, оно добавляется через v-model, при первом изменении состояния чекбокса. А vue, как известно, не может обнаружить добавление свойства объекта. Так что это свойство, чтобы оно стало реактивным, должно изначально присутствовать в объекте, и, раз оно используется для задания состояния чекбоска, то пусть дефолтным значением будет false.

UPD. Или можно обновить используемую версию vue на 2.5.0 или выше, там v-model добавляет отсутствующие свойства как реактивные.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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