![](/img/trans.png)
[英](Nuxt.js/Vue.js) Setting axios auth token in Vuex store resets after refresh
[英]Nuxt.JS (Vue.JS) and VueX binding a form to an array of objects in a VueX store
我需要一些将表单绑定到对象数组中的Defaultsettings列表的帮助。 我正在使用NuxtJs和VueX,这是我创建的Defaultsettings的列表:
这是我到目前为止所拥有的。
使用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
},
所有帮助将不胜感激!
我没有让vuex-map-fields与Nuxt.JS配合使用,所以我将存储数据映射到created()中
created() {
this.ruleForm.defaultsettings = this.$store.state.jobs.defaultsettings.map((obj) => Object.assign({}, obj))
}
现在,当循环遍历this.ruleForm.defaultsettings时,我可以使用v-model更改状态
<div class="row" v-for="(defaultsetting, index) in ruleForm.defaultsettings " v-if="defaultsetting.groupsequence === 1" >
<div class="col-sm-4">
{{defaultsetting.label}}
</div>
<div class="col-sm-4">
<el-switch
style=""
v-model="ruleForm.defaultsettings[index].active"
active-color="#13ce66"
inactive-color="#ff4949"
/>
</div>
<div class="col-sm-4" v-if="ruleForm.defaultsettings[index].active === true">
<el-checkbox v-model="ruleForm.defaultsettings[index].mandatory" />
</div>
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.