访问键值的元素,ng-options中的值

时间:2014-09-14 06:50:20

标签: javascript jquery angularjs

monthA JSON =  
   [
      {
        "1": [
          {
            "monthNumber": "1",
            "monthName": "January"
          }
        ],
        "2": [
          {
            "monthNumber": "2",
            "monthName": "February"
          }
        ],
        "3": [
          {
            "monthNumber": "3",
            "monthName": "March"
          }
        ],
        "4": "April",
        "5": [
          {
            "monthNumber": "5",
            "monthName": "May"
          }
        ],
        "6": [
          {
            "monthNumber": "6",
            "monthName": "June"
          }
        ],
        "7": [
          {
            "monthNumber": "7",
            "monthName": "July"
          }
        ],
        "8": [
          {
            "monthNumber": "8",
            "monthName": "August"
          }
        ],
        "9": [
          {
            "monthNumber": "9",
            "monthName": "Septemeber"
          }
        ],
        "10": [
          {
            "monthNumber": "10",
            "monthName": "October"
          }
        ],
        "11": [
          {
            "monthNumber": "11",
            "monthName": "November"
          }
        ],
        "12": [
          {
            "monthNumber": "12",
            "monthName": "December"
          }
        ]
      }
    ]

HTML:

<td ng-repeat="ap in monthA" style="width:100px;" align="center">           
  <select onchange="modifiyOtherDropDowns(this);removeErrorMessagesOfAllLowerDivsUsingObj(this)"
          ng-model="A_months_model_$index" 
          ng-options="value.monthName as value.monthName for (key , value) in ap">
    <option value=""></option>  
  </select>
</td>

我正在访问JSON monthA,其中可以有多个元素。对于每个元素,我都有一个键值对。对于每个值,我有另一个JSON,我想访问它的属性。我尝试使用上面编写的代码。但下拉显示空白。

我在哪里做错了?

2 个答案:

答案 0 :(得分:1)

for (i = 0; i < arr.length; i++) {
    var obj1=arr[i];
    for (var prop in obj1)
    {
        var optgroup=$("<optgroup label="+prop+"></optgroup>");
        var propArr=obj1[prop];
        var options = '';
        for (var j = 0; j < propArr.length; j++) {
            var obj2=propArr[j];
            for (var prop2 in obj2)
            {
                options += '<option value="' + prop2 + '">' + obj2[prop2] + '</option>';                
            }
            optgroup.append(options);
        }
        $("select#obj").append(optgroup);        
    }    
}

DEMO

答案 1 :(得分:1)

希望这会有所帮助:

$(document).ready(function(){
    var arr= [
              {
                "1": [
                  {
                    "monthNumber": "1",
                    "monthName": "January"
                  }
                ],
                "2": [
                  {
                    "monthNumber": "2",
                    "monthName": "February"
                  }
                ],
                "3": [
                  {
                    "monthNumber": "3",
                    "monthName": "March"
                  }
                ],
                "4": "April",
                "5": [
                  {
                    "monthNumber": "5",
                    "monthName": "May"
                  }
                ],
                "6": [
                  {
                    "monthNumber": "6",
                    "monthName": "June"
                  }
                ],
                "7": [
                  {
                    "monthNumber": "7",
                    "monthName": "July"
                  }
                ],
                "8": [
                  {
                    "monthNumber": "8",
                    "monthName": "August"
                  }
                ],
                "9": [
                  {
                    "monthNumber": "9",
                    "monthName": "Septemeber"
                  }
                ],
                "10": [
                  {
                    "monthNumber": "10",
                    "monthName": "October"
                  }
                ],
                "11": [
                  {
                    "monthNumber": "11",
                    "monthName": "November"
                  }
                ],
                "12": [
                  {
                    "monthNumber": "12",
                    "monthName": "December"
                  }
                ]
              }
            ];
        for (i = 0; i < arr.length; i++) {
            var obj1=arr[i];
            for (var prop in obj1)
            {
                var options = '';
                var propArr=obj1[prop];
                  if(propArr[0].monthNumber != undefined){
                    var obj2=propArr[0];
                        options += '<option value="' + obj2.monthNumber+ '">' +obj2.monthName + '</option>';
                  }else{                
                   options += '<option value="' + prop+ '">' +propArr + '</option>';                
                  }
                $("select#obj").append(options);        
            }    
        }


});


</script>