我想根据文章类别数组中是否存在类别ID来设置复选框的“已检查”属性。
categories对象中的每个类别都有“_id”和“name”字段,例如: { _id:12,名称:准备工作 }
articles.categories是一个id的数组,例如:[1,12,22]
这就是我现在所拥有的:
- categories.forEach(function(category) {
- var check = 'false'
- article.categories.forEach(function(id) {
- if(id === category._id) {
- check = 'true'
- }
- });
- if(check == 'true') {
li: label.checkbox
input(type="checkbox", name="categories", checked, value=category._id)
=category.name
- } else {
li: label.checkbox
input(type="checkbox", name="categories", value=category._id)
=category.name
- }
- });
传入的数据是正确的,它正在迭代正确的值,我只需要能够根据匹配设置checked属性。感谢。
答案 0 :(得分:2)
几天前我做了类似的事情。我所做的是为'checked'属性分配一个布尔值。见下面的代码。请注意,我将check变量从string更改为boolean。我还删除了if-then-else语句。
- categories.forEach(function(category) {
- var check = false
- article.categories.forEach(function(id) {
- if(id === category._id) {
- check = true
- }
- });
li: label.checkbox
input(type="checkbox", name="categories", checked=check, value=category._id)
=category.name
- });
答案 1 :(得分:0)
也可以使用indexOf(至少从节点> 0.5.1开始)
input(type="checkbox", name="categories", checked=article.categories.indexOf(category._id) !=-1)