1

記事のカテゴリ配列にカテゴリ ID が存在するかどうかに基づいて、チェックボックスの「checked」属性を設定したいと考えています。

カテゴリ オブジェクトの各カテゴリには、「_id」フィールドと「名前」フィールドがあります。例: { _id: 12, name: 準備 }

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 も使用できます (少なくともノード > 0.5.1 以降)。

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

于 2013-08-25T20:33:43.647 に答える