實現vue的組件化,是很好,但是組件之間傳值也好,本來對vue的理解可能也較淺吧
一、父組件向子組件傳值
peopleName爲要傳遞的值;
父組件:
<li v-bind:peopledetail="peopleName" keep-alive></li>
子組件:
export default {
name:"baseAchievement",
props:['peopledetail'],
}
<div>{{peopledetail}}</div>
這樣是能顯示出來(顯示的方式)
但是 要想在methods的方法中拿到this.peopledetail,根本拿不到,拿到的方法
法一、監聽(數據變化時)
this.$watch('this.$watch('peopledetail', function(newVal, oldVal){
self.peopleName = newVal;
能拿到
});
但是我遇到了點擊後peopleName變化,切換Tab頁peopleName並沒有變化,導致根本就不執行監聽函數,更拿不到peopledetail的值了
法二、把peopleName 監聽後放在緩存裏,從緩存中獲取(解決了但感覺不是最好方法)
this.$watch('peopledetail', function(newVal, oldVal){
localStorage.setItem("value", newVal);
barQuest();
});
function barQuest(){
console.log(localStorage.getItem("value"));
}
barQuest();
二、子組件向父組件傳值
子組件
this.$emit('contrast-say',{傳遞的值});對象或者是單個值
父組件
<li v-on:contrast-say="listenTocontrast" ></li>
methods: {
listenTocontrast: function (data){
console.log(data)
}
}