1

我想根据文章类别数组中是否存在类别 ID 来设置复选框的“已检查”属性。

类别对象中的每个类别都有字段“_id”和“名称”,例如:{_id:12,名称:准备工作}

article.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
        - }     
- });

传入的数据是正确的,并且它正在迭代正确的值,我只需要能够根据匹配设置选中的属性。谢谢。

4

2 回答 2

2

几天前我做了类似的事情。我所做的是为“checked”属性分配一个布尔值。请参阅下面的代码。请注意,我将您的检查变量从字符串更改为布尔值。我还删除了 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     
- });
于 2013-06-18T02:18:17.203 回答
0

也可以使用 indexOf(至少从 node > 0.5.1 开始)

input(type="checkbox", name="categories", checked=article.categories.indexOf(category._id) !=-1)

于 2013-08-25T20:33:43.647 回答