最近在用Vue寫頁面,有一個頁面需求如下:用一個父頁面嵌套了兩個表單子頁面,子頁面中的表單字段相差不多(有部分字段需複用)。初始時默認開啓第一個表單(第二個表單項未開啓),填寫部分數據後,如果再開啓第二個表單,需要將第一個表單中已填寫的可複用項拷貝到第二個表單中(不需要再重複選擇),之後兩個表單間不再有聯動,各改各的!!!
就是上面那段紅字出問題了!!!
首先看下頁面想要實現的效果:
父頁面同步實現,想要在某個子頁面啓用時,實現一次複製數據,但是在數據複製後,兩個子表單頁面中的數據居然出現了聯動【改上面表單中的A數據,下面表單中的A數據也會一起變化】,我去咧,想要這種效果的時候沒有,現在給我整事!!!
<div v-if="showVisitView">
<fund-visit ref="visitView" :pdata="copyfromAct"></fund-visit>
</div>
<div v-if="showActView">
<fund-activity ref="actView" :pdata="copyfromVisit"></fund-activity>
</div>
<script>
computed:{
copyfromAct(){
return JSON.stringify((this.showActView && this.$refs["actView"])?this.$refs["actView"].store:{});
},
copyfromVisit(){
return JSON.stringify((this.showVisitView && this.$refs["visitView"])?this.$refs["visitView"].store:{});
}
}
</script>
邏輯一點點排查,確認了屬性名重複、代碼邏輯重複、對象關聯等情況,都沒效果,
最後的最後,終於找到了這篇文章,茅塞頓開呀,還是堆棧沒學好!!!:
https://www.jianshu.com/p/32d44a047b07
原理很簡單,就是js的堆棧: