在使用Vue框架开发时,在函数中改变了页面中的某个值,在函数中查看是修改成功了,但在页面中没有及时刷新改变后的值;
如往数组中push数据,但页面没有实时渲染,可用 this.$forceUpdate()
强制渲染数据
运用 this.$forceUpdate()
强制刷新(因为数据层次太多,render函数没有自动更新,需手动强制刷新。)
子页面中回调函数往父页面数组中添加元素,但父页面未及时渲染展示
// 子页面回调函数
confirmCallBack: function (data) {
console.log('你点击了确定!');
// app.clearSalesArea();
$.each(data, function (index, value) {
app.addSalesArea(value);
}
);
}
// 父页面元素添加方法
addSalesArea: function (data) {
var that = this;
that.formData.sales_area.push({
id: data.id,
name: data.name,
route: data.route,
route_name: '',
});
that.formData.sales_area = this.unique(that.formData.sales_area);
this.$forceUpdate(); // 强制重新渲染页面
},
v-for循环值刷新问题:
<Select v-model="carSafeLine.insuranceName" placeholder="请选择" class="mulisel option-h" filterable clearable :disabled="editstatus" @on-change="selectInsurance">
<Option v-for="item in dataArr" :key="item.code" :value="item.code" :label="item.codename" :disabled="item.disabled"></Option>
</Select>
methods: {
selectInsurance(){ //刷新车辆保险可选状态
for(var i=0; i<this.dataArr.length; i++){
var flag = false; //默认没有选中
var itemI = this.dataArr[i];
for(var j=0; j<this.form.carInsuranceVOList.length; j++){ //检测选项是否已被选中过
var itemJ = this.form.carInsuranceVOList[j];
if(itemI.code == itemJ.insuranceName){
flag = true;
break;
}
}
if(flag){
itemI.disabled = true;
}else{
itemI.disabled = false;
}
}
this.$forceUpdate(); //强制刷新,解决页面不会重新渲染的问题
}
}