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;
});
Вы можете использовать свойства в глобальном в вашем шаблоне. Вы можете думать о них как о "самом низком" уровне в стеке контекста.