Vue组件使用记录

Vue组件使用记录

1.公用dialog组件,接受父组件的表头和表数据,当表单中不同的输入类型时,可以在传过来的表头中增加标识,如例子:

父组件传过去的数据

Info: {
        title: '', // 标题
        item: [], // 输入项
        typeselect: [] // type选项列表
      }, // 弹框信息,title、item
info.item = [
        {
          name: '名称', // 表单的label
          type: 'input', //判断表单项类型,此处时input
          prop: 'name',  // 传过去需要绑定的prop值,建议唯一
          value: '这是传过去的value值'
        },
        {
          name: '是否动态',
          type: 'switch',
          prop: 'isDynamic',
          value: '这是传过去的value值'
        }
]

子组件接收,接收对象时,注意default的写法,必须是函数。

props: {
    Info: {
      type: Object,
      default: function() {
        return {}
      }
    }
  }

弹窗渲染的时候,填充myform对象,这是在子组件的data定义的对象

myform:{}
this.Info.item.forEach((item, index) => {
      this.$set(this.myform, item.prop, item.value) //prop作key, value作值,保证v-model绑定的唯一性
    })
<el-form :model="myform" :rules="rules" ref="myform">
        <el-form-item v-for="(item, index) in info.item" v-bind:key="index" :label="item.name" :prop="item.prop">
          <el-input v-if="item.type == 'input'" v-model="myform[item.prop]"></el-input>
          <el-switch
            v-if="item.type == 'switch'"
            v-model="myform[item.prop]"
            :active-value= '1'
            :inactive-value= '0'
          ></el-switch>
          <el-select v-if="item.type == 'selected'" v-model="myform[item.prop]">
            <el-option
              v-for="(selectedItem, index) in Info.typeselect"//这个是同时传过来的下拉选项值
              :key="index"
              :label="selectedItem.name"
              :value="selectedItem.value"
            ></el-option>
          </el-select>
        </el-form-item>
</el-form>
2.format替换ElementUi table表格循环获得的数据项:
<el-table-column
        v-for="(item, index) of tableHeader"
        v-bind:key="index"
        :label="item.label"
        :prop="item.prop"
        align="center"
      >
        <template slot-scope="scope">
          <span  v-if="item.format" >{{formatdata[scope.row[item.prop]]}}</span> //需要转换格式的format标识为true时
          <span v-else>{{scope.row[item.prop]}}</span> // 当其他不需要转换格式的format为false时,照常显示
        </template>
</el-table-column>

data是与之对应的包含key和value值的对象数组(其中key是未转换之前的值,value是需要的值)
比如

data: [
	{
		key:test1,
		value:testvalue1
	},
	{
		key:test2,
		value:testvalue2
	}
]
data.forEach(item => {
        this.$set(this.formatdata, item.key, item.value)
      })

这里得到的formatdata数据格式如下:

formatdata: {
	test1: testvalue1,
	test2: testvalue2
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值