Мне нужна помощь с привязкой формы к списку настроек по умолчанию из массива объектов. Я работаю с NuxtJ и VueX, и это список настроек по умолчанию, которые я создал:
- name defaultsetting (просто текст)
- активный (кнопка переключателя, которая определяет настройку по умолчанию, будет активна или нет - логическое значение)
- обязательно (переключатель, который определяет, будет ли задана настройка по умолчанию или нет - булево)
Это то, что я имею до сих пор.
С помощью Axios я выполняю вызов на стороне сервера для получения списка настроек по умолчанию и отправляю его в хранилище заданий
asyncData(context) {
return context.app.$axios
.$get('jobs/create')
.then(data => {
context.store.dispatch('jobs/getDefaultsettings', data.defaultsettings)
})
.catch(e => context.error(e))
},
В jobs.js эта функция вызывается:
getDefaultsettings(context, data) {
context.commit('setDefaultsettings', data)
},
getDefaultsettings затем фиксирует данные в setDefaultsettings:
setDefaultsettings(state, data) {
data.forEach(function(d) {
d.mandatory = false
d.active = false
})
state.defaultsettings = data
},
Чтобы в настройках данных были настройки по умолчанию, я сохранил state.defaultsettings в созданной функции.
created() {
this.ruleForm.defaultsettings = this.$store.state.vacatures.defaultsettings
}
Но это то, где я запутался. Каков наилучший способ связать данные. Я нашел этот пример: https://vuex.vuejs.org/guide/forms.html,, но я не могу заставить его работать. Я получаю сообщение об ошибке Не могу прочитать свойство 'обязательное' из неопределенного
<div class="row" v-for="defaultsetting in ruleForm.defaultsettings " :key="defaultsetting.id">
<div class="col-sm-4">
{{defaultsetting.name}}
</div>
<div class="col-sm-4">
<el-checkbox v-model="defaultsetting.mandatory" :value="mandatory" @input="updateMandatory"/>
</div>
Я добавил обязательное как вычисляемое свойство:
computed: {
mandatory () { return this.$store.state.vacatures.defaultsetting.mandatory }
},
И в методах:
methods: {
updateMandatory (e) {
this.$store.commit('updateMandatory', e.target.value)
},
},
И в jobs.js я добавил мутацию:
updateMandatory (state, setting) {
state.defaultsetting.mandatory = setting
},
Вся помощь будет принята с благодарностью!