Dust.js在模板中获取帮助程序的调用计数

时间:2015-08-26 15:06:44

标签: javascript dust.js dust-helpers

所以我有一个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有一个想法,也许我只是错过了......真的很简单。 欢呼声。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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