首頁 > web前端 > js教程 > 主體

vue父子元件之間是如何進行傳值的

不言
發布: 2018-07-21 11:07:05
原創
2869 人瀏覽過

這篇文章給大家分享的是關於vue父子元件之間是如何進行傳值的,內容很不錯,有需要的朋友可以參考一下,希望可以幫助到大家。

背景:最近在做vue的項目,因為頁面的邏輯比較複雜,程式碼量較多,所以就想抽離一些元件放到component裡面。問題就隨之來了。
因為vue不提倡在子元件中修改父元件的值,所以如果要這樣操作的話就要麻煩一步,而我正好需要這樣的操作,於是就查閱了資料
先上父元件的程式碼,引用了exp-group子元件

<exp-group :grpVisible="grpVisible" :grpData="grpData" @updateData="acceptData"></exp-group>
登入後複製

grpVisible 和grpData 是傳給子元件的屬性,一個是普通型別,一個是物件

grpVisible: false,
grpData: {app: this.$route.query.app, exp: this.$route.query.exp},
登入後複製

接下來我要在子元件中改變這兩個屬性的值傳給父元件,先在子元件中定義一下

props: {
  grpVisible: {
    type: Boolean,
    default: false
  },
  grpData: {
    type: Object
  }
},
登入後複製

首先普通類型的grpVisible 屬性如果要修改,需要定義一個變數將grpVisible 值複製給這個變數,然後再修改這個變量,傳遞給父元件,具體見程式碼

let demo1 = this.grpVisible
demo1 = true
this.$emit('updateData', demo1) //子组件
登入後複製

父元件透過acceptData的參數value接收這個值

acceptData (value) {
  console.log(value)
}, //父组件
登入後複製

如果是物件的話,就需要用Object.assign拷貝一份新的賦值給一個變量,然後修改這個變量,傳遞給父組件,代碼如下:

let demo1 = Object.assign({}, this.grpData)
demo1.app = 'binge'
this.$emit('updateData', demo1)
登入後複製

相關推薦:

vue如何利用樹形控制項z- tree動態新增資料

JavaScript利用DOM如何實作圖片切換?

以上是vue父子元件之間是如何進行傳值的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!