Реактивные вложенные V-For с использованием Vue / Vuex - PullRequest
0 голосов
/ 11 февраля 2019

Я рендерил таблицу, используя вложенные объекты / массивы из моего магазина Vuex.Когда я добавляю строку в таблицу, несмотря на то, что объект строки добавляется в правильный массив (проверено в Vue Dev-Tools), DOM не обновляется, чтобы показать дополнительные строки.

I 'Я боролся с этим уже несколько часов и решил, что я попрошу немного помощи.Я прочитал предупреждения о реактивности и многое другое в документах Vue безрезультатно.Пожалуйста, помогите.

Объект в моем магазине Vuex, из которого выполняется рендеринг таблицы ...

propertyRating: {
        location: [
            { name: null, inferior: true, slightlyInferior: true, similar: true, slightlySuperior: true, superior: true },
        ],
        site: [
            { name: null, inferior: false, slightlyInferior: false, similar: false, slightlySuperior: false, superior: false },
        ],
        additionalFeatures: [
            { name: null, inferior: true, slightlyInferior: false, similar: true, slightlySuperior: false, superior: true },
        ],
}

Я использую вложенный v-for для загрузки таблицы каждым ключомpropertyRating представляет строку заголовка, соответствующее значение массива представляет список отдельных строк, которые будут отображаться под заголовком.

<div v-for="(section, sectionName) in sections" :key="sectionName">
   <div v-for="(row, index) in [section]" :key="sectionName+index" class="w-row"></div>
</div>

Состояние сопоставляется с компонентом следующим образом:

computed: {
...mapState({
  location: state => state.evaluation.propertyRating.location,
  site: state => state.evaluation.propertyRating.site,
  additionalFeatures: state =>
    state.evaluation.propertyRating.additionalFeatures,
  sections: state => state.evaluation.propertyRating
  })
}

Наконец, мутация для добавления пустой строки в раздел таблицы ...

ADD_PROPERTY_RATING_ROW(state, sectionName) {
   Vue.set(state.propertyRating[sectionName], state.propertyRating[sectionName].length, { name: null, inferior: true, slightlyInferior: false, similar: true, slightlySuperior: false, superior: true });
},

Несмотря на добавление объекта в соответствующий массив разделов (проверено в Vue Dev Tools), DOMне обновляется, чтобы показать новую строку.Буду признателен за любую оказанную помощь.Я делаю все, что знаю, и не могу заставить его работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...