javascript - What is a good way to create a variable in JsRender? -
in jsrender template, blocks can create variables, write this:
{{if true ~myvariable=myexpensivefunction()}} {{:~myvariable}} {{:~myvariable}} {{/if}}
however, bogus if
annoying. there better way?
if can initialize myvariable
outside template, can make helper variable, , pass in:
var html = mytmpl.render(data, {myvariable:myexpensivefunction()});
if need initialize in specific template/data context say, can use contextual parameters, scoped template block. use tag wraps context.
if context is top-level in template, then:
- either top-level data , can pass in helper above
- or 'partial' template rendered anothor (layout) template, using
{{sometag tmpl=.../}}
, in case can set contextual parameter calling tag in other template - or else rendering against array
for last case can use {{include}}
:
{{include ~myvariable=myexpensivefunction()}} {{:~myvariable}} {{:~myvariable}} {{/include}}
or can call noiteration
set true:
var html = mytmpl.render(data, [helpers,] true);
and wrap in {{for}}
:
{{for ~myvariable=myexpensivefunction()}} {{:~myvariable}} {{:~myvariable}} {{/for}}
edit:
in particular case, based on comments added below, need initialize in context of item block within {{for somearray}}
- in order item data.
(actually item block 'partial' template called using {{for somearray tmpl=...}}
, basic problem same).
in scenario indeed need add {{include}}
wrapper, @ top-level (for you) or within {{for}}
if not doing template composition.
Comments
Post a Comment