公司有一個特定場景:點擊新聞列表中的某一項,然后在彈出框內展示新聞詳情。即:新聞列表為父組件,彈框為子組件。內容詳情以傳值的方式給到子組件。但是內容中有很多a標簽點擊a標簽后阻止跳轉,點擊后會直接跳轉。業務邏輯需要阻止跳轉使a鏈接失效
第一種方法:在子組件內監聽父組件傳遞過來的值。手動修改dom元素將a鏈接的事件 flase
新聞詳情

<script>
import Vue from 'vue'
export default {
data() {
return {
}

},
methods: {
preventAclick(){
let aTagBox = window.document.getElementsByClassName("new-c-content")
let aTag = aTagBox[0].getElementsByTagName('a')
for(let i = 0; i < aTag.length; i++){
aTag[i].onclick = function(event) {
event.preventDefault();
// return false
// 這兩個都可以阻止

}
}
}
},
mounted() {
this.preventAclick()
},
watch: {
propsObj: {

handler(){
let page = this
// 必須加一個定時器,不然獲取到的是上一次的值
setTimeout(function(){
page.preventAclick()
}, 100)
}
}
},
props: {

propsObj: {
type: Object
}
}
}
</script>
第二種方法: 同樣是watch父組件傳遞的值,然后去遍歷內容的字符串點擊a標簽后阻止跳轉,修改掉a鏈接的href值或者替換a標簽為其他標簽