開發一個新系統,前端用的vue,vue是單體應用,所有頁面都在一個窗口里實現,但項目要求在點button鏈接后要新打開一個瀏覽器頁面,解決方法如下:
1.?給此button設置新事件?@click="createdefect"
提交缺陷
2.在頁面上新增一個默認 a組件
3.?寫js事件
createdefect(){
let target = this.$refs.target
target.setAttribute('href', window.location.origin + '/#/createDefect')
target.click()
},
或者可以這樣:
createdefect(){
letrouteName= "createDefect";
letrouteData= this.$router.resolve({
name: routeName,
});
window.open(routeData.href, "_blank");
},
然后新開的頁面還用的app.vue中的全局背景,需要更改。之前想著用改變最上層body的css覆蓋來解決問題,結果沒走通,查資料發現要從生命周期, js的邏輯來解決。要通過一個組件“初始化”,“銷毀"來控制body的顏色。下面是具體代碼。
1.?在新頁面的js中增加如下代碼:
beforeCreate: function() {
document.getElementsByTagName("body")[0].className="body_back";
},
beforeDestroy: function() {
document.body.removeAttribute("class","body_back");
}
2.?在新頁面對應的css中設置如下:
.body_back{
background:linear-gradient(to right,#fff,#f5f6f9)
}