vue 2.0 關於 子元件修改父元件 prop
阿新 • • 發佈:2021-06-19
vue元件通訊(父子)
父元件通過v-bind的形式 向子元件中傳遞相應的 引數或自定義的屬性
<tenantNewForm :submitLoading='submitLoading' ref='formData'
style="padding-left: 2px" :table-height="iHeight -40"
:select-org-id="selectOrgId" :formData='newFormData'
@submit="submit" :editBtn="editBtn"/>
子元件 props 接收響應的引數,也可自定義引數內建,可以直接使用無需註冊
props: { formData: { type: Object, default: () => { return {} } }, roleList: { type: Array, default: () => { return [] } }, submitLoading: { type: Boolean, default: () => { return false } }, editBtn:{ type: Boolean, default:false } },
- 當我們使用子元件通過 v-model繫結時,是否可以直接修改 props的值?會用什麼影響
prorps接收到資料相當子元件的data裡面的狀態變數 可以直接進行修改;父元件的相應的值也會改變
//子元件 <el-form ref="formData" :model="formData" label-width="100px"> <el-form-item label="上級欄目:" prop="news_groups_parent_name" > <el-input v-model="formData.news_groups_parent_name" type="text" disabled readonly/> </el-form-item> </el-form>
//父元件
可以直接用 newFormData 獲取到表單修改的 值
當我用普通的屬性繫結的形式 發現當修改prorp的 只是子元件裡的改變了 父元件沒有改變,
2. 當我們使用普通屬性繫結時 能否在子元件修改父元件的傳遞的值 父元件裡面也跟著改變?
首先props的資料 是單向資料流, 我們就需在根源解決問題 直接修改父元件的值
(1)可以子向父通訊的方式 父元件監聽 進行修改
(2)this.$emit('update:prorps值',修改的data)=》this.$emit('update:editBtn',false)
(3)vuex
(4)refs
...方法有點多,根據實際業務需求來,個人還是比較喜歡(2)簡單直接; 有興趣的 可以研究研究