vue.js - 渲染时设置 vue-swatches 子组件的颜色
问题描述
我目前正在使用 VueJS 开发一个项目。
简单来说,我有一个项目列表,这些项目包含一个名为color
.
当我单击列表中的一项时,会出现该项目的属性,因此该color
属性由颜色选择器(Vue Swatches)显示。
问题是,我有一个父组件,其中调用了颜色选择器组件,但这不是直接v-swatches
调用的组件,它是一个自定义组件。
ColorPicker.vue(自定义子组件)
<template>
<div>
<v-swatches v-model="color" v-on="listeners"></v-swatches>
</div>
</template>
<script>
import VSwatches from "vue-swatches";
import "vue-swatches/dist/vue-swatches.css";
export default {
name: "e-colorpicker",
components: { VSwatches },
data() {
return {
color: "#1CA085"
};
},
computed: {
listeners() {
return {
...this.$listeners,
input: this.updateColorValue
};
}
},
methods: {
updateColorValue(event) {
this.$emit("input", event);
}
}
};
</script>
我在父组件中调用这个自定义的子组件:
EditPlanning.vue(父组件)
// This is just a little part of my parent component code
<e-colorpicker
class="position-relative"
v-model="selectedItem.color"
:value="selectedItem.color"
:key="selectedItem.color"
/>
当我在父页面中保存更改时,我调用了一个调用 api ( POST updateItem() ) 的方法,该方法更新了我的数据库中的指定项目,这部分工作得很好。
但是,当我刷新页面时,即使我从数据库中成功获取了项目的更新属性颜色,自定义颜色选择器组件在渲染时也不会获取和更新prop
颜色。
注意:颜色选择器的呈现仅在我从父组件中的项目列表中选择一个项目时。所以我的mounted
父组件中有一个部分,它调用getItems()
从 api 获取数据的方法。
那么如何e-colopicker
在渲染之前更新子组件的颜色属性呢?
编辑:
这是我的问题的图片:
选择颜色并保存
重新加载页面后
我希望在使用先前保存的选定颜色渲染颜色选择器时更新颜色。颜色在我的数据库中正确更新,只是在刷新页面上渲染时不更新颜色的组件。
解决方案
要将颜色从父组件传递到子组件 ( e-colorpicker
),您必须在子组件中定义一个prop。
props: ["color"],
将颜色从父级传递给子级:
<e-colorpicker
class="position-relative"
:color="selectedItem.color"
:value="selectedItem.color"
:key="selectedItem.color"
/>
然后将颜色绑定到v-model
:
<v-swatches v-model="color" v-on="listeners"></v-swatches>
并且不要忘记删除硬编码的颜色属性:
data() {
return {
color: "#1CA085"
};
},
工作沙箱。
推荐阅读
- python - 在 docker 上运行时 Python 烧瓶重新加载器“Errno 2 No such file or directory”错误
- excel - 宏 VBA 代码在独立运行时运行良好,但在与其他宏在字符串中运行时会损坏
- python - 如何使用 tkinter 显示函数调用的输出?
- java - Apache POI 无法识别工作表名称:当前工作簿中不存在指定的命名范围“RtSummary.1”
- android - e:java.lang.IllegalStateException:后端内部错误:代码生成期间出现异常
- actionscript-3 - 1120 未定义错误,但实例名称正确
- c# - MSSqlServer 接收器仅在 LoggingLevelSwitch 为 Information 或更低时记录
- javascript - 为什么这个异步函数将传递给它的参数转换为 Promise 对象?
- influxdb - 一次测量 - 三种数据类型
- javascript - typeof EnforceAjax 不可分配给类型中间件