dust.js eq helper无法正常工作

时间:2014-01-21 04:00:21

标签: javascript templates dust.js

我有以下json:

{ "list": [ 
    { "course": "math",    "type": "1" }, 
    { "course": "science", "type": "1" }, 
    { "course": "gym",     "type": "2" }, 
    { "course": "art",     "type": "3" }
 ]
}

这是我的模板:

{#list}
  {@eq key=type value="1"}
     {course} {type}
  {/eq}
   {:else}
    no course,
{/list}

{:else}不起作用。它打印:没有课程,没有课程,没有课程,没有课程,(打印它的次数是数组中的记录数

如果没有找到type = 1,我想显示type = 1的所有课程并打印“no course”

任何人都知道我做错了什么?

2 个答案:

答案 0 :(得分:3)

你非常接近。正确的语法是:

{@eq key=type value="1"}
   {course} {type}
{:else}
    No course
{/eq}

您的错误是您在打开@eq之前关闭了else帮助程序,但else实际上是@eq帮助程序的一部分。这同样适用于?#以及使用:else的任何其他地方。

答案 1 :(得分:0)

假设您现在已经解决了这个问题,但一个好的解决方案可能是编写自己的帮手:

dust.helpers.course_filter = function(chunk, context, bodies, params){
  if(params.key == 1){
    bodies.block(chunk, context);
  } else {
    bodies.else(chunk, context);
  }
};

然后在你的模板中:

{#list}
 {@course_filter key=type}
  {course} {type}
 {:else}
  No course
 {/course_filter}
{/list}

修改 在阅读了对其他答案的回答之后,我相信我的例子将给出你不希望得到的相同结果。我对你究竟想要得到什么感到有点困惑,但是一个自定义助手通常会在到达目的地方面提供更大的灵活性