• 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 } 就是父组件接收的表单组件返回的数据。如此就是 具名+作用域 插槽的用法。

  • 相关阅读:
    使用Newtonsoft进行JSON序列化时将枚举序列化为字符串的方法
    通过javac导出Jar包
    JAVA中JDBC连接Mysql数据库简单测试
    使用Swashbuckle.AspNetCore生成.NetCore WEBAPI的接口文档
    CentOS7中使用yum安装Nginx的方法
    Dockerfile 指令 ADD 和 COPY介绍
    Azure Web应用中设置静态虚拟目录的方法(比如部署Django需要用到)
    pip常用命令(转载)
    android发布新版忘记keystore(jks)密码终极解决方案
    IntelliJ Idea 常用快捷键列表
  • 原文地址:https://www.cnblogs.com/smile-fanyin/p/15002132.html
Copyright © 2020-2023  润新知