Javascript dust.js eq helper不工作

Javascript dust.js eq helper不工作,javascript,templates,dust.js,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"} {co

我有以下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}
{#list}
 {@course_filter key=type}
  {course} {type}
 {:else}
  No course
 {/course_filter}
{/list}
{:else}不工作。它打印:无进程,无进程,无进程,无进程,(打印它的次数是数组中的记录数

我想显示类型为1的所有课程,如果找不到类型为1,则打印“无课程”


有人知道我做错了什么吗?

你很接近。正确的语法是:

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

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

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

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

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

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

dust.helpers.course_filter = function(chunk, context, bodies, params){
  if(params.key == 1){
    bodies.block(chunk, context);
  } else {
    bodies.else(chunk, context);
  }
};
然后在模板中:

{#list}
  {@eq key=type value="1"}
     {course} {type}
  {/eq}
   {:else}
    no course,
{/list}
{#list}
 {@course_filter key=type}
  {course} {type}
 {:else}
  No course
 {/course_filter}
{/list}
编辑:
在阅读了您对另一个答案的回答后,我相信我的示例将给出与您不希望得到的结果相同的结果。我有点困惑您到底想要得到什么,但定制帮助程序通常在到达那里方面提供了更大的灵活性

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

dust.helpers.course_filter = function(chunk, context, bodies, params){
  if(params.key == 1){
    bodies.block(chunk, context);
  } else {
    bodies.else(chunk, context);
  }
};
然后在模板中:

{#list}
  {@eq key=type value="1"}
     {course} {type}
  {/eq}
   {:else}
    no course,
{/list}
{#list}
 {@course_filter key=type}
  {course} {type}
 {:else}
  No course
 {/course_filter}
{/list}
编辑:
在阅读了您对另一个答案的回答后,我相信我的示例将给出与您不希望得到的结果相同的结果。我有点困惑您到底想要得到什么,但定制助手通常在到达那里时提供了更大的灵活性

谢谢您的回答。我认为我解释得不够。我想我试图做的是按键值过滤json,并只显示那些结果。如果没有键值的记录(即:如果我输入value=5,则应显示“no course”。我用key value=1尝试了你的解决方案,结果是:math1,science1,No-course,No-course。我要找的是:key value=1:math1,science1或key-value=7 No-course。我不知道我是否需要@if助手。有什么想法吗?谢谢你的回答。我认为我解释得不够。我想做的是过滤json按键值,仅显示这些结果。如果没有键值记录(即:如果输入值=5,则应显示“无课程”。我用key value=1尝试了你的解决方案,结果是:math1,science1,No course,No course。我要找的是:key value=1:math1,science1或key value=7 No course。我不知道我是否需要@if助手。有什么想法吗?