如何在尘埃js模板中启动变量。
问题:
//want to initiate a variable like flag = false;
{#orderItemData}
{^isTicketDisabled}
//assign flag = true;
{/isTicketDisabled}
{/orderItemData}
//I need to process here on the basis of flag.
我该怎么办?请帮忙。
答案 0 :(得分:0)
有几种不同的解决方案。我会给你一个跟随你的问题的信,一个我认为更优雅,完成同样的事情。
如果您真的想根据Dust模板将数据设置到上下文中,您可以编写一个帮助程序来执行此操作。它可能看起来像这样:
dust.helpers.addToContext = function(chunk, context, bodies, params) {
var key = context.resolve(params.key);
var value = context.resolve(params.value);
// The easiest thing to do is just to add this value to the context globals
// so that it's accessible everywhere
context.global[key] = value;
return chunk;
}
然后你会像这样使用它:
{@addToContext key="flag" value="true"/}
然而,你真正想要的是一种说“如果任何门票被禁用,做某事”的方式。这就是上下文帮助者的用途 - 它们是对现有数据的转换。您可以像这样在上下文中添加一个帮助器:
{
orders: [{ orderItemData: { ... } },
{ orderItemData: { ... } },
{ orderItemData: { ... } }]
isTicketForOrderDisabled: function(chunk, context, bodies, params) {
// Helpers can return true or false to determine the rendering
// of their block, among many other things. This is a simple example
return context.get('isTicketDisabled');
}
}
并像这样使用它:
{#orders}
{#orderItemData}{! Display some things !}{/orderItemData}
{#isTicketForOrderDisabled:orderItemData}{! Passing a single order to the helper !}{/isTicketForOrderDisabled}
{/orders}
所以现在您不必更改上下文,但仍然可以从现有数据中获取所需的所有信息。