vue父子元件之間傳值及函式中獲取props中的值
實現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)
}
}