vue中 具名插槽+作用域插槽的混合使用


vue + elementui 的項目中,通過后端返回的數據動態封裝表單組件。

其中有些場景:

  1、有些下拉框是聯動的,例如前面的一個下拉框選擇值之后,后一個下拉框才根據前面的下拉框選擇的值加載數據;

  2、有些輸入框后面跟一個圖形操作等等

上面的需求就需要用到插槽了。

這里只簡單的介紹 具名插槽+作用域插槽 混合在一起使用的方法。

其中組件 mulForms.vue 里面封裝的代碼是(注意 slot里面的寫法):

<template v-if="item.slotName">
    <el-form-item :label="item.name" :disabled="item.isedit == 0" :prop="item.columncode"
    >
        <slot :name="item.slotName" v-bind="{ item, formResult }" ></slot>
    </el-form-item>
</template>

注解:

  slot中的 :name="item.slotName" 是具名插槽的使用, v-bind="{ item, formResult }" 是向父組件傳遞的子組件的數據。

其中父組件引用的時候:

<mulForms>
  <template v-slot:framesystem="{item,formResult}">
    <div class="form-item">
     <span>{{item.name}}</span>
    </div>
  </template>
  <template v-slot:computesign="{item,formResult}">
    <div class="form-item">
      <span>item:{{item.name}}</span>
    </div>
  </template>
</mulForms>

注解:

  v-slot:framesystem="{item,formResult}" 中的 framesystem 為name,后面的 {item,formResult} 為組件向父組件返回的數據。

總結:

  1、vue官網說的都不是很明確,其中組件里面的 v-bind="{ item, formResult }" 這樣的返數據,在官網沒有找到這樣的寫法,還是參考別人的寫法。

  2、在引用組件的時候,父組件中 v-slot:computesign="{item,formResult}" 的寫法,computesign 就是表單組件中 item.slotName 的name值,后面的 { item, formResult } 就是父組件接收的表單組件返回的數據。如此就是 具名+作用域 插槽的用法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM