javascript - 在 Vuetify 日历中使用嵌入式属性
问题描述
我正在尝试使用 Vuetify 的v-calendar组件。
我在文档event-start
中看到,如果我的事件没有相同的属性名称,我可以使用该道具。
问题是我的事件具有嵌入式属性,我不知道是否event-start
处理这种情况。
我的活动:
events: [
{
id: 'b9d93291-6d95-47b9-994a-ee9f266fb6b8',
type: 'reservation_item',
attributes: {
start_date: '2020-09-23T00:00:00.000Z',
end_date: '2020-09-25T00:00:00.000Z',
},
},
]
来自 vuetify 的事件示例:
events: [
{
name: 'Weekly Meeting',
start: '2020-09-07 09:00',
end: '2020-09-07 10:00',
},
],
我试图做类似的事情,但它不起作用。
<v-calendar
ref="calendar"
locale="fr-fr"
:now="today"
:value="today"
:events="events"
event-start="attributes.start"
color="primary"
type="month"
></v-calendar>
解决方案
在探索vuetify 插件的源代码后,后者期望值作为直接属性存在于事件对象中。所以你不能访问其他嵌套的“孩子”,它必须是一个直接的财产。
有两种方法可以使这项工作:
attributes
1-通过将内部属性移动到对象的根来映射您的事件数组,然后将此道具传递给v-calendar
:event-start="startDate"
2- 使用从 API 获取原始 JSON 的方法创建一个 javascript 类 (MyEvent) fromJson
(这样您将 JSON 封装到域对象中)并返回 MyEvent 实例数组。例如,您可以这样做:events[0].start
您甚至不必将其作为值传递给event-start
道具,因为默认情况下它需要一个start
属性作为默认值。
这种替代方案的另一个优点是,由于事件现在被封装到它自己的 javascript 类中,您可以添加辅助方法、getter/setter 或任何原本会在您的“视图”逻辑中的逻辑,并有助于获得更好的关注点分离。
推荐阅读
- spring-boot - 带有 SQS 的 Spring Boot JMS 消耗过多的 CPU
- c# - 这个javascript技巧是否有C#对应物来避免过多的递归
- python - 对顶级功能的困惑
- asp.net-core - .NET Core 3.1 URL 在 Visual Studio 2019 中无法正常运行
- angular - 为什么我的 RxJS 倒计时时钟不显示?
- apache - Apache2 服务器后面的 Spring Boot SSL
- python - 如何从文本文件映射二维数组
- android - 如何从 Kotlin Firebase 中的两个引用中正确添加适配器?
- reactjs - 从 React 向 GraphQL 服务器进行查询时出现意外错误
- java - 如何在 JSON 中获得某个值?