思路1:就是讓利用v-if的重新渲染機制
1.首先考慮的就是手動刷了,給組件加個v-if=”someShow“;
2.在父組件添加如下方法;
// 這是組件上寫法 :<my-component v-if="someShow"></my-component>
// 下邊寫在父組件的methods里
refesh:function(){
this.someShow=false;
var _this=this;
this.$nextTick(function(){
_this.someShow = true;
})
}
// $nextTick
// $nextTick 是在下次 DOM 更新循環結束之后執行延遲回調,在修改數據之后使用 $nextTick,則可以在回調中獲取更新后的 DOM 這樣重新渲染就會是最新數據了
這樣就完美解決了不更新的問題。、
思路2:利用watch監聽
在子組件中監聽你要的數據,當然別監聽對象,監聽了不一定好使。親測不好使,測過好使的,可以給我留言。
data:function(){
return {
title:"",
content:"",
btn:""
}
},
methods:{
changeTitle:function(){
this.title=this.listTitle;
// 這里的每次變化了就復制給組件上的變量,視圖也就更改了
},
changeList:function(){
this.content=this.listList;
},
changeBtn:function(){
this.btn=this.listBtn;
}
},
watch:{
listTitle:"changeTitle",
listList:"changeList",
listBtn:"changeBtn"
// 冒號前邊這個就是從父組件傳過來的,后邊的就是變化了的監聽函數
}