2015-04-27 3 views
-1

Ниже приведена моя JSON. Я хочу использовать 2ndCol, 3rdCol, 4thCol, которые находятся в строках.Вложенный анализ JSON в Angular JS

{ 

    "workflows":[ 
     { 
     "New":{ 
      "All":{ 
       "sections":[ 
        { 
        "id":"section_1", 
        "section":"", 
        "title":"SEPG Audit Checklist", 
        "rows":[ 
         { 
          "id" : "0", 
          "label" : "How do you establish and maintain the description of the process needs and objectives for the organization?", 
          "2ndCol" : { 
           "type" : "select", 
           "source":[ 
             { 
             "id":"Yes", 
             "value":"Yes" 
             }, 
             { 
             "id":"No", 
             "value":"No" 
             }, 
             { 
             "id":"N/A", 
             "value":"N/A" 
             } 
           ], 
           "value":[], 
           "required":true, 
           "disabled":false, 
           "hidden":false 
          }, 
          "3rdCol" : { 
           "type" : "select", 
           "source":[ 
             { 
             "id":"Yes", 
             "value":"Yes" 
             }, 
             { 
             "id":"No", 
             "value":"No" 
             } 

           ], 
           "value":[], 
           "required":true, 
           "disabled":false, 
           "hidden":false 
          }, 
          "4thCol" : { 
           "type" : "textarea", 
           "label": "Comments", 
           "PlaceHolder":"Enter Comment", 
           "Value":"" 
          } 
         }, 
         { 
          "id" : "1", 
          "label" : "Explain Organizational process performance objectives?", 
          "2ndCol" : { 
           "type" : "select", 
           "source":[ 
             { 
             "id":"Yes", 
             "value":"Yes" 
             }, 
             { 
             "id":"No", 
             "value":"No" 
             }, 
             { 
             "id":"N/A", 
             "value":"N/A" 
             } 
           ], 
           "value":[], 
           "required":true, 
           "disabled":false, 
           "hidden":false 
          }, 
          "3rdCol" : { 
           "type" : "select", 
           "source":[ 
             { 
             "id":"Yes", 
             "value":"Yes" 
             }, 
             { 
             "id":"No", 
             "value":"No" 
             } 

           ], 
           "value":[], 
           "required":true, 
           "disabled":false, 
           "hidden":false 
          }, 
          "4thCol" : { 
           "type" : "textarea", 
           "label": "Comments", 
           "PlaceHolder":"Enter Comment", 
           "Value":"" 
          } 
         } 
         ] 
        } 
       ] 

      } 
     } 
     } 
    ] 
} 

Я могу использовать идентификатор, ярлык строк. Но когда я пытаюсь использовать 2ndCol, 3rdCol и 4thCol в строках. Он показывает неперехваченный исключающий аргумент.

Мой угловой контроллер,

angular.forEach($scope.auditJSON.workflows, function(workflow, workflowIndex) { 
        angular.forEach(workflow, function(workflowValue, workflowKey) { 
         angular.forEach(workflowValue, function(value, roleKey) { 
          angular.forEach(value.sections, function(section, sectionIndx) { 
           angular.forEach(section.rows, function(row, rowIndx) { 

            console.log(row.label); // It shows fine 

            console.log(row.2ndCol.type); // It shows the Error 

           }); 
          }); 
         }); 
        }); 
       }); 

Я не могу понять проблемы.

+0

использовать строку ["2ndCol"] – ABOS

+0

что вы пытаетесь сделать с этим? 'ng-repeat' выполнит большую часть цикла для вас – charlietfl

+0

Используя ng-repeat, я визуализую данные в html. Но мне нужны значения 2ndCol, 3rdCol в контроллере для других целей. –

ответ

-1

Вы пишете, что вы хотите, чтобы получить значение типа 2ndCol и 3rdCol [вы пишете в комментариях]

console.log(row.2ndCol.type); // It shows the Error 

Вы также пишете, что показывает ошибку. Я даю блоки кода. Это должно сработать.

angular.forEach($scope.auditJSON.workflows, function(workflow, workflowIndex) { 
       angular.forEach(workflow, function(workflowValue, workflowKey) { 
        angular.forEach(workflowValue, function(value, roleKey) { 
         angular.forEach(value.sections, function(section, sectionIndx) { 
          angular.forEach(section.rows, function(row, rowIndx) { 
            if(row['2ndCol'].type === 'select' && row['3rdCol'].type === 'select'){ 
             if(row['2ndCol'].value != row['3rdCol'].value){ 
              console.log(row['2ndCol'].value); 
              console.log(row['3rdCol'].value); 
             } 
            } 

          }); 
         }); 
        }); 
       }); 
      }); 

Если проблема решена, примите как ответ.

+0

Я пытаюсь это ...... –

2

Ваши angular.forEach немного перепутаны.

enter image description here

angular.forEach($scope.data, function (workflow, workflowIndex) { 
     angular.forEach(workflow, function (workflowValue, workflowKey) { 
      angular.forEach(workflowValue, function (value, roleKey) { 
       angular.forEach(value, function (sections, sectionIndx) { 
        angular.forEach(sections, function (section, rowIndx) { 
         angular.forEach(section, function (row, rowIndx) { 
          angular.forEach(row, function (row, rowIndx) { 
           if (rowIndx === 'rows') { 
            angular.forEach(row, function (row, rowIndx) { 
             var row2 = row['2ndCol']; 
             var row3 = row['3rdCol']; 
             console.log(row2, row3); 
            }); 
           } 
          }); 
         }); 
        }); 
       }); 
      }); 
     }); 
    }); 

Я на самом деле пришлось создать репозиторий, так что вы можете увидеть, как это работает. Также, пожалуйста, не используйте, что много forEach в вашем производстве!

EDIT: https://github.com/eknowles/blank-ng/tree/29902467/nested-json-parsing-in-angular-js

+0

Почему эта строка [0]. Здесь? –

+0

Я как раз собирал первую строку в качестве примера. –

+0

Но мне нужно динамически выбирать все строки. –

Смежные вопросы