Dust.js получает количество вызовов помощника в шаблоне

Итак, у меня есть 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]) это работает (конечно). Но это заставляет меня вести учет элементов, которые я выбрасываю (особенно раздражает при добавлении и удалении элементов)

Надеюсь, у кого-то есть идея, может быть, я просто скучаю по чему-то простому. Приветствия.

1 ответ

Решение

Есть специальный global объект, прикрепленный к каждому контексту, который содержит ссылки, которые вы бы хотели видеть повсюду в вашем шаблоне.

Для получения дополнительной информации см. Context Globals.

Вы заранее заселите глобальное, позвонив dust.context({ foo: 'bar' }) создать объект контекста. Вы можете передать это Dust на шаге рендеринга вместо простого Object.

Внутри любого помощника вы можете напрямую обращаться к глобалу, чтобы установить для него свойства:

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

Вы можете использовать свойства в глобальном в вашем шаблоне. Вы можете думать о них как о "самом низком" уровне в стеке контекста.

Другие вопросы по тегам