全世界隻有不到3 % 的人關注了我
你真是個特别的人
在vue項目日常開發中,難免要把功能性元件抽離出來,這樣結構就會出現父子元件,兄弟元件等,但是這樣就會涉及到不同元件需要互相使用其中的某個值的問題。之前有說過通過ref來讓父元件操作子元件,并且傳值,那麼我們今天來詳細看看。
點選父元件按鈕,操作子元件顯示
注:可以通過擷取id/class來操作,這裡我就不介紹這種方法了。至于jquery的話,在vue中還是慎用,畢竟jq擷取到的都是全局的,可能會導緻擷取其他元件中的元素。
介紹:這裡通過給子元件綁定ref屬性,引号命名自定義,然後父元件通過 this.$refs.名字 就可以操作子元件的元素,以改變它的樣式等。
<template> <div class="DbSource-box"> <el-button type="primary" icon="" class="addBtn" @click="addDbSource()">新增el-button> <db-source-add ref="addAlert" v-on:init="init">db-source-add> div>template> <script> import DbSourceAdd from "../components/DbSourceManager/DbSourceAdd"; export default { name: "DbSourceManager", components: {DbSourceAdd}, methods: { // 點選新增按鈕,彈出新增資料源的彈框 addDbSource(){ this.$refs.addAlert.$el.style.display = "block"; }, } }script>
擷取子元件data中的變量
父元件:
這裡通過給子元件綁定ref屬性,引号中的命名自定義,然後父元件通過 this.$refs.名字.變量名 就可以獲得子元件中的值
<template> <div class="DbSource-box"> <el-button type="primary" icon="" class="selectBtn" @click="deleteSelectDbSource()">批量删除el-button> <db-source-table ref="getSelectData" :Data="Data" v-on:init="init">db-source-table> div>template> <script> import DbSourceTable from "../components/DbSourceManager/DbSourceTable"; export default { name: "DbSourceManager", components: {DbSourceTable}, methods: { // 删除選中的資料源(批量删除) deleteSelectDbSource(){ console.log(this.$refs.getSelectData.multipleSelection) }, } }script>
子元件:
<template> <div class="table-box"> div>template> <script> export default { name: "DbSourceTable", props:["Data"], data(){ return { multipleSelection:[], pagesize: 3, currpage: 1, currId:"" } }script>
好了,以上就是父元件擷取子元件的值并且操作子元件的方法。 期待能夠對你有所幫助~~~