1

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

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

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

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

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

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

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

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

4

1 回答 1

0

每个 Context都有一个特殊global对象,其中包含您希望在模板中随处可用的引用。

有关详细信息,请参阅上下文全局变量

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

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

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

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

于 2015-08-26T16:16:19.210 回答