vuex
state:{
currentFieldIndex:-1, //用于定位当前修改的field在fields中的下标
fields:[] //动态添加字段,例如:name,label,sex
}
mutations:{
setFieldEdit (state,value){
const index = state.currentFieldIndex
state.fields[index] = Object.assign({},state.fields[index],value)
}
}
field.vue
<el-form-item :label="name+'的标签'">
<el-input
v-model="label">
</el-input>
</el-form-item>
computed:
{
currentFieldIndex () {
return this.$store.state.formCustom.currentFieldIndex
},
name () {
return this.$store.state.formCustom.fields[this.currentFieldIndex].name
},
label :{
get () {
return this.$store.state.formCustom.fields[this.currentFieldIndex].label
},
set (value) {
this.setFieldEdit({ label: value })
}
}
},
methods:{
...mapMutations([
'setFieldEdit'
])
},
通过动态添加state.fields结构如下:
[
{
name:'1_name',
label:'1_label',
...
},
{
name:'2_name',
label:'2_label',
...
},
{
name:'3_name',
label:'4_label',
...
},
...
]
就是现在 field里面的值虽说可以得到 但是在页面上面无法修改,调用了mutations>setFieldEdit 方法但是没有实时显示出来。
我将fields里面的数据,只单独写一个对象没有使用多层嵌套,就可以的。
请教一下,首先我这种写法对吗?我参考了Vuex 严格模式下的表单处理,如果不对,需要怎么写,谢谢
https://cn.vuejs.org/v2/guide...