vue组件动态绑定属性值

vue组件动态绑定属性值 — vue技术交流群(864583465)

应用场景:在有些时候,我们需要根据后台返回的数据,动态渲染组件,同时动态渲染的组件上也需要动态绑定属性值,举个例子:

// 1、假设从后台拿到的数据为
let compList = [
	{
		compType: 'select',
		props: {
			multiple: false,
			filterable: true
		},
		value: '',
		options: [
			{
				label: '选项1',
				value: '1',
			},
			{
				label: '选项2',
				value: '2'
			}
		]
	},
	{
		compType: 'input',
		props: {
			clearable: false,
		},
		value: '',
	}
] 

// 2、现在需要根据该list每一项中的compType去渲染不同的表单组件:
//    select => 下拉框, input => 输入框,同时,需要将每一项的props传递到对应的组件中

// 3、根据compType渲染不同的组件,大家可能都会。可以用vue的component,或者直接写个if else去判断,
// 两种实现方式都行。然而由于不同的组件绑定的属性值不一样,一个一个添加相关属性,效率很低,
// 而且一旦组件比较多就会增加工作量,这就需要能够动态去添加组件的属性值,这里就用到了v-bind指令,代码如下

<template>
  <div class="home">
    <el-input
      v-model="input"
      v-bind="props"
    />
  </div>
</template>

<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';

@Component({})
export default class Home extends Vue {
  private input = ''
  private props = {
    placeholder: '请输入内容',
    clearable: true
  }
}
</script>

// 4、需要注意的是props对象里的key值要与实际组件的属性值一样,否则应该不生效的。

欢迎加入vue技术交流群 864583465,你的提问将是我们共同进步的关键!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值