根据Node的输入,在Jade模板中设置checkbox的checked属性

时间:2013-06-18 02:01:26

标签: node.js pug

我想根据文章类别数组中是否存在类别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属性。感谢。

2 个答案:

答案 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)