javascript - Wix Velo — 如何使用对象数组
问题描述
我目前正在Wix 上建立一个网站,但遇到了一个我无法摆脱的问题。Wix 支持或 Wix Velo 论坛都无法帮助我。
我有一个连接到 Stores/Products 集合的转发器,在 Stores/Products 集合中有一个包含产品附加信息部分的集合字段。我有三个信息部分;节奏、流派和标签。每个都包含一个描述。
它看起来像这样:
[
{
"title": "Tempo",
"description": "<p>142 BPM</p>\n"
},
{
"title": "Genre",
"description": "<p>Jazz</p>\n"
},
{
"title": "Tags",
"description": "<p>Frank Ocean, Travis Scott</p>\n"
}
]
我已经想出了如何使用以下代码提取单个对象:
export function audioRepeater_itemReady($item, itemData, index) {
let product = $item('#dataset3').getCurrentItem(itemData._id)
let ArrayAdditionalInfo = []
ArrayAdditionalInfo = product.additionalInfoSections
ArrayAdditionalInfo.forEach((element) => {
console.log(element.title)
console.log(element.description)
})
但我希望它能够弄清楚例如。Title === "Genre",然后它将显示该数组中的描述,如下所示:
{
// if equal to this:
"title": "Genre",
// show me this
"description": "<p>Jazz</p>\n"
},
整个计划是在我可以在转发器中实现的文本元素中显示描述输出。我尝试过使用if语句,但我自己无法将它们组合在一起。如果这令人困惑,我很乐意详细说明。
先感谢您。
解决方案
我认为您的问题与处理程序有关。您使用中继器 onItemReady 处理程序,这不是您的情况的最佳选择。它要求中继器中的每一行。而不是这个,我建议使用数据集的 onReady
$w("#dataset3").onReady( () => {
console.log("The dataset is ready");
$w("#audioRepeater").getItems(0, 20).then( (result) => {
let items = result.items;
items.forEach((element) => {
if (element.title === 'Genre') {
doWhatDoYouWant(element)
}
})
} ).catch( (err) => {
let errMsg = err.message;
let errCode = err.code;
} );
} );
请注意这个块应该被插入到 $w.onReady
推荐阅读
- android - 通过android每天设置闹钟8时钟不起作用
- react-beautiful-dnd - 使用 react-Beautiful-dnd,如何在拖动开始之前更改可拖动尺寸(onBeforeCapture)
- vim - 从语法集群中删除 @Spell
- python - ADF 使用 python 删除活动 - 无法创建日志记录
- postgresql - 如何连接到在 docker 中运行的 postgres 实例?
- vuejs2 - 如何在 Vuejs 中有条件地显示数据
- vb.net - 创建一个等待延迟替代 Application.DoEvents
- .htaccess - 将旧网址重定向到 htaccess 中的新网址?
- python - 可通过密码访问的 Django 页面
- android - 是否可以要求 Android Keystore 的应用特定 PIN 身份验证