Dust.js 获取模板中助手的调用次数

Dust.js get call count of helper in template

所以我有一个 dust.js 助手,它在调用时需要一些 jsx 模块,然后将此模块呈现为 html(某种插件)。

{@react type="Text"\}
...
<some Markup>
...
{@react type="Text"\}
{@react type="Text"\}

同时我有一个数据结构,其中包含应在此模板(页面)上呈现的所有元素

['1st', '2nd', '3rd']

在我的助手中,我想知道我调用的频率 @react。就像在这个模板中调用的所有助手都可以访问的上下文上增加一个计数器。

我正在摆弄 context.pop()context.push 但无法改变模板的上下文。每个帮手都有自己的。所以我要么需要一种方法来获取 helper 的调用计数,要么将 helper 的当前调用次数存储在其他人可以访问的地方。

然而,当像 {@react type="Text" index=0\} 那样做某事时,然后用 context.get(['page', 'elements', params.index]) 访问它(当然)。但这迫使我对我正在处理的元素进行计数(在添加和删除元素时尤其烦人)

希望 s/o 有一个想法,也许我只是错过了一些非常简单的东西。 干杯。

每个上下文都附加了一个特殊的 global 对象,其中包含您希望在模板中随处可用的引用。

有关详细信息,请参阅 Context Globals

您通过调用 dust.context({ foo: 'bar' }) 来预填充全局以创建上下文对象。您可以在渲染步骤中将其传递给 Dust 而不是普通对象。

在任何 helper 中,您可以直接访问全局以在其上设置属性:

react: function(chunk, context, bodies, params) {
  var numTimesCalled = ++context.global.numTimesCalled;
});

您可以在模板中使用全局属性。您可以将它们视为上下文堆栈中的 "lowest" 级别。