1. 程式人生 > 其它 >vue 2.0 關於 子元件修改父元件 prop

vue 2.0 關於 子元件修改父元件 prop

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
    }
  },
  1. 當我們使用子元件通過 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)簡單直接; 有興趣的 可以研究研究