gpt4 book ai didi

javascript - 如何使用dust.js从当前上下文中获取数据

转载 作者:行者123 更新时间:2023-11-28 06:12:46 25 4
gpt4 key购买 nike

我正在使用 Dust.js 并尝试使用dust.makeBase 函数来合并和渲染 dataxdatay 中两个数组的数据em>newcontext 变量。

var context = dust.makeBase();
var newcontext = context.push(datax)
.push(datay);

作为 Dust 文档,最后推送的数组(在我的示例中为 datay)成为当前上下文。启动于jsFiddle我可以看到从当前上下文获取的数据正确显示。

自助存储信息

   {#.}
{#data}{id} - {special_offer}
{/data}
{/.}

但是,当我在当前上下文之外显示数据时,显然数据未到达。以下无效。

自助仓储设施

{#.}
{#facility}
{id} - {size}
{#facilityamenities.amenities}{amenities_id} - {full_desc}
{/facilityamenities.amenities}
{/facility}
{/.}


我收到了一些关于 http://www.dustjs.com/guides/contexts/ 的说明但这还不够。

在网上检查了一些示例,我使用了上下文助手,并在 jsfiddle 上找到了这个版本。尽管执行了函数代码,但结果并不符合预期。下面是一段代码。

var context = dust.makeBase({"getselfdata": {
"selfdata": function(chunk, context)
{
var price = context.get("facility.price_formatted");

return price;
}
}});

非常感谢任何帮助。

最佳答案

您完全正确,推送到上下文的最后一项将成为当前上下文。如果将多个项目推送到上下文中,则无法按位置引用它们,例如“在该项目之前推送到上下文中的项目”。

如果您向 Dust 提供当前上下文中不存在的引用,Dust 将在每个先前的上下文中搜索该引用。这允许您遍历上下文堆栈。

我对您的示例进行了两处更改以使其正常工作。对于 datax,我将数组包装在一个带有一个键的对象中,facilities:

{ "facilities": [
{ "facility": { ... } },
{ "facility": { ... } }
]}

然后,在您的模板中,我告诉 Dust 搜索此引用:

{#facilities}
{#facility}
<tr><td>{id} - {size} - {#facilityamenities}{#amenities}
{amenities_id} - {full_desc}
{/amenities}{/facilityamenities}</td></tr>
{/facility}
{/facilities}

此模板中还有一个错误。要使 {#facilityamenities.amenities} 正常工作,您的数据需要如下所示:

{ "facilityamenities": {
"amenities": { ... } }

但是,您的“facilityamenities”是一个数组,因此您应该使用{#facilityamenities}{#amenities},以便Dust首先循环 facilityamenities,然后搜索amenities

通过这些更改,您的 JSFiddle我相信你的意图是这样的。

关于javascript - 如何使用dust.js从当前上下文中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36229804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com