Low Code 平台里怎么动态绑定组件属性?
我在做一个可视化编辑器,拖拽组件后想通过表单动态修改它的 props,但不知道怎么把表单值和组件实例关联起来。比如下面这个按钮组件:
<template>
<button :style="{ color: textColor, backgroundColor: bgColor }">
{{ label }}
</button>
</template>
<script>
export default {
props: ['label', 'textColor', 'bgColor']
}
</script>
现在我在右侧属性面板用 input 控制 textColor,但改了之后页面上的按钮没反应,是不是得用某种响应式机制或者事件总线?试过直接赋值给组件 data,但好像隔离了。
核心思路是这样的:你在父组件里维护一个组件配置数组,每个组件的配置对象里包含它的 props 值。属性面板改的是这个配置对象里的值,然后通过 v-bind 动态传给组件。
简单说两句实现:
父组件里这样写:
关键点就是:属性面板的 input 直接 v-model 绑定到
selectedComp.props.textColor,这样改完 Vue 自动帮你更新,不需要什么事件总线。你之前试的直接赋值给组件 data 不行,是因为每个组件实例的 data 是独立的,你得从外部数据源(父组件的配置对象)驱动它变化。
如果你的场景是多个组件需要选中了再编辑,加个点击事件把
selectedComp指向对应配置就行。组件实例本身不用你手动存,动态组件 + v-bind 这种写法,Vue 内部会处理实例创建和更新。