我有以下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”
任何人都知道我做错了什么?
答案 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}
修改强> 在阅读了对其他答案的回答之后,我相信我的例子将给出你不希望得到的相同结果。我对你究竟想要得到什么感到有点困惑,但是一个自定义助手通常会在到达目的地方面提供更大的灵活性