数组变化 不能触发视图更新
1 vue 不能检测到数组变化 不能触发视图更新:
使用
Vue.set( target, propertyName/index, value )
参数:
{Object | Array} target
{string | number} propertyName/index
{any} value
返回值:设置的值。
用法:
向响应式对象中添加一个 property,并确保这个新 property 同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新 property,因为 Vue 无法探测普通的新增 property (比如 this.myObject.newProperty = 'hi')
注意对象不能是 Vue 实例,或者 Vue 实例的根数据对象。
<el-button style="float: right; padding: 3px 0" type="primary" icon="el-icon-arrow-down" @click="downShow(defIndex,2)" ></el-button>
<span v-if="form.Def.CfgID[defIndex]">
<el-select v-model="defHeros[defIndex][heros[form.Def.CfgID[defIndex]]['askill']['_id']]" placeholder="技能1" default-first-option style="width:140px">
<el-option v-for="lv in heros[form.Def.CfgID[defIndex]]['askill']['max_lv']" :key="lv" :label="heros[form.Def.CfgID[defIndex]]['askill']['comment'] +'Lv'+ lv" :value="lv"></el-option>
</el-select>
<span v-for="(skill,id) of heros[form.Def.CfgID[defIndex]]['pskill']" :key="id" :class="id < 2 ? 'input-sapn': ''">
<el-select v-model="defHeros[defIndex][skill['_id']]" :placeholder="'技能'+(id+2)" style="width:140px">
<el-option value="0" label="--请选择--"></el-option>
<el-option v-for="lv in skill['max_lv']" :key="lv" :label="skill['comment'] +'Lv'+ lv" :value="lv"></el-option>
</el-select>
</span>
</span>
downShow(index,id){
if (id == 1){
this.$set(this.atkArrowDown,index,!this.atkArrowDown[index])
}else{
this.$set(this.defArrowDown,index,!this.defArrowDown[index])
}
},