我正在使用mustache。我正在生成一个通知列表。通知JSON对象看起来像:
[{"id":1364,"read":true,"author_id":30,"author_name":"Mr A","author_photo":"image.jpg","story":"wants to connect","notified_type":"Friendship","action":"create"}]
有了mustache,我如何基于notified_type
& action
来做if语句或case语句?
如果notified_type == "Friendship"
渲染……
如果notified_type == "Other && action == "invite"
渲染.....
这是怎么回事?
5条答案
按热度按时间u2nhd7ah1#
刚刚看了一下胡子文档,他们支持“倒置部分”,其中他们的状态
如果键不存在、为false或为空列表,则将呈现它们(倒排部分)
http://mustache.github.io/mustache.5.html#Inverted-Sections
nfzehxib2#
胡子模板,通过设计,非常简单;homepage说道:
无逻辑模板。
因此,一般的方法是在JavaScript中执行逻辑并设置一堆标志:
然后在模板中:
如果你想要一些更高级的功能,但又想保持Mustache的大部分简单性,你可以看看Handlebars:
Handlebars提供了必要的功能,使您可以毫无障碍地有效构建语义模板。
Mustache模板与Handlebars兼容,因此您可以使用Mustache模板,将其导入Handlebars,并开始利用额外的Handlebars功能。
ufj5ltwl3#
一般来说,使用
#
语法:目标是将尽可能多的逻辑移出模板(这是有意义的)。
6jjcrrmo4#
我有一个简单而通用的hack来执行key/value if语句,而不是mustache中的boole-only(并且以非常可读的方式!):
有了这个黑客,一个像这样的对象:
在转换之前看起来像这样:
你的mustache模板看起来像这样:
8iwquhpp5#
基于@françois-dispaux的解决方案,我写了一个递归的变种,叫做
prepMustache
,浏览多级对象,并为所有的子对象添加key=value
键,而且:hasTimexxx
用于变量timexxx大于00:00:00var123>0
大于0key[i]=value
用于子阵列我还将这个函数放在全局范围内,以便在我的Node-Red项目中的任何地方使用它。
用途:
使用(红色节点):