如何在灰尘中使用动态键来映射属性文件中的内容

时间:2014-12-15 07:16:34

标签: dust.js kraken.js

我从控制器获取JSON,并且根据此JSON的值,我想在我的防尘文件中设置密钥,以便此密钥将从属性文件中访问数据。

例如我正在进行"步骤"来自控制器。

   {
      step: step1
   }

我想把钥匙放在灰尘中:

   {@pre type="content" key="{step}"/}

在属性中我有

step1=This is dynamic key
step2=print this

但是我在尘埃中得到了 step1 。它没有访问键的值。任何人都可以建议我如何在这个位置显示与键相关的值。

4 个答案:

答案 0 :(得分:1)

{@pre type="content" key=step/}
step是变量时

。要设置字符串,例如:' stackoverflow',请尝试:

{@pre type="content" key="stackoverflow"/}

答案 1 :(得分:1)

这是你自己的pre帮手吗?

您需要更改帮助程序的行为以调整它对param执行的操作。

function(chunk, context, bodies, params) {
  // Assuming I have {@pre key="{step}" /}
  params.key; // <== this will be a Dust function that, when run, returns "step1"
  dust.helpers.tap(params.key, chunk, context); // <== the string "step1"
  context.get(dust.helpers.tap(params.key, chunk, context)); // <== the string "This is dynamic key"
}

您想要评估参数,然后从上下文中获取相应的键,因此您需要第三个表单。

dust.helpers.tap需要dustjs-helpers插件库。

答案 2 :(得分:1)

在海妖中,@ pre助手不是真正的尘埃助手。

https://github.com/krakenjs/makara#how-do-i-reference-content-in-a-dust-template

它具有一个语法,但它是一个占位符,在构建时被内容字符串替换为.properties文件中的匹配键值。构建时行为意味着您无法动态选择要在运行时使用的内容元素。

最好的办法是在控制器中动态选择所需的值,并将结果内容字符串作为模型中的数据元素传递。然后,您可以在模板中引用它。

请参阅此处,了解按键引用bundle元素的示例: https://github.com/krakenjs/makara#example

答案 3 :(得分:1)

我尝试过如下,但它确实有用。

JSON

{
  step: step1,
  data: {
    pageName: "Hello"
  }
}

代码

{@pre type="content" key=step /}
{@pre type="content" key=data.pageName /}