需求
子頁面進入后,能在主頁面顯示子頁的相關信息,比如說主頁面的菜單激活的是哪個子頁面的菜單項
如上圖,當刷新瀏覽器頁面時,讓菜單的激活項仍保持在【最近瀏覽】。
實現方式:
在子頁面的create事件中增加:
created(){console.log("子路由打開=====", this.$route.path)this.$emit("childOpen", this.$route.path);},
主頁面?router-view 中 增加:
<router-view @childOpen="childOpen"></router-view> ...childOpen(url) {console.log("url1====", url)if (url == "/recovery") {this.activeMenu = "recovery"}else if (url == "/history") {this.activeMenu = "history"}else if (url == "/person") {this.activeMenu = "person"}else if (url == "/collect") {this.activeMenu = "collect"}},
主頁面菜單相關代碼:
<div class="menu"><div class="item pointer" :class="{'activeMenu' : activeMenu=='person'}" @click="menuClick('person')"><img class="huiyuan-ico" src="@/assets/images/kongjian2.png"/><div>個人空間</div></div><div class="item pointer" :class="{'activeMenu' : activeMenu=='history'}" @click="menuClick('history')"><img class="huiyuan-ico" src="@/assets/images/history2.png"/><div>最近瀏覽</div></div><div class="item pointer" :class="{'activeMenu' : activeMenu=='collect'}" @click="menuClick('collect')"><img class="huiyuan-ico" src="@/assets/images/like2.png"/><div>我的收藏</div></div><div class="item pointer" :class="{'activeMenu' : activeMenu=='recovery'}" @click="menuClick('recovery')"><img class="huiyuan-ico" src="@/assets/images/hsz2.png"/><div>收回站</div></div></div>
這樣,當子路由的頁面create后,就會告訴主頁面,「我打開了」,主頁面收到消息后,得到了具體的頁面地址,通過地址判斷是打開了哪個頁面,從頁主頁面就激活具體的哪項菜單。