Express 检查数组是否有值,如果没有,则添加类';T
我有一个用玉石写的分类名称列表Express 检查数组是否有值,如果没有,则添加类';T,express,pug,Express,Pug,我有一个用玉石写的分类名称列表 ul li Discussion li Movie li Music li Performance li Dance li Theatre 我有一些json,它显示了添加到特定事件的类别: … values: [ { ordinal: 50469, db_value: 626, id: 50469, value: "Discussion" }, { ordinal: 5047
ul
li Discussion
li Movie
li Music
li Performance
li Dance
li Theatre
我有一些json,它显示了添加到特定事件的类别:
…
values: [
{
ordinal: 50469,
db_value: 626,
id: 50469,
value: "Discussion"
},
{
ordinal: 50470,
db_value: 623,
id: 50470,
value: "Dance"
}
],
…
我有一条路线,它获取类别值:
res.render("event", {
categories: data.result.properties.category.values
})
我如何才能得到这样的结果,即if/else检查值是否与li标记中的值相同,并由此添加一个类。如果不在json数组中显示,则为unactive:
<ul>
<li>Discussion</li>
<li class="unactive">Movie</li>
<li class="unactive">Music</li>
<li class="unactive">Performance</li>
<li>Dance</li>
<li class="unactive">Theatre</li>
</ul>
- 讨论
电影
音乐
性能
- 跳舞
剧院
我首先将数据稍微调整为更易于渲染的格式,如下所示:
var _ = require('underscore');
var categoryNames = _.map(data.result.properties.category.values, function(value) {
return value.value;
});
// categoryNames is an array like this: ['Discussion', 'Dance']
res.render("event", {
categoryNames: categoryNames
})
ul
each category in categoryNames
li category
ul
each category in ['Discussion', 'Movie', 'Music', 'Performance', 'Theatre']
li(class=(categoryNames.indexOf(category) === -1) ? "" : "inactive") #{category}
现在,您可以得到您想要的行为,如下所示:
var _ = require('underscore');
var categoryNames = _.map(data.result.properties.category.values, function(value) {
return value.value;
});
// categoryNames is an array like this: ['Discussion', 'Dance']
res.render("event", {
categoryNames: categoryNames
})
ul
each category in categoryNames
li category
ul
each category in ['Discussion', 'Movie', 'Music', 'Performance', 'Theatre']
li(class=(categoryNames.indexOf(category) === -1) ? "" : "inactive") #{category}
但是,如果您真的想保留“disabled”cateogray标记,可以使用以下内联条件:
var _ = require('underscore');
var categoryNames = _.map(data.result.properties.category.values, function(value) {
return value.value;
});
// categoryNames is an array like this: ['Discussion', 'Dance']
res.render("event", {
categoryNames: categoryNames
})
ul
each category in categoryNames
li category
ul
each category in ['Discussion', 'Movie', 'Music', 'Performance', 'Theatre']
li(class=(categoryNames.indexOf(category) === -1) ? "" : "inactive") #{category}
首先,我将简化数据格式。您可以在将节点发送到模板之前在节点中执行此操作,也可以在模板本身中使用一些JS。我将仅在此处编辑模板:
- categoryNames = categories.map(function(c){return c.value});
这将创建一个仅包含名称的数组。(而且,它甚至不需要下划线.js.)
现在,您只需使用indexOf()
检查数组中是否存在给定名称:
您的代码是一个开始,但它看起来会输出
类别名称
中每个项目的完整列表。哇,删除了第二个jade模板中的每个项目,很好。但是现在您没有类别
变量。恐怕唯一合适的解决办法是我的回答得好,我很高兴我能帮你完成90%的任务;)