JSON object TypeError: Cannot set property '0' of undefined

JSON object TypeError: Cannot set property '0' of undefined

我有两个 JSON 对象,一个包含建筑物,另一个包含房间。一个失败,一个成功。它们都以代码、值对的形式出现。

两者都附加到下拉菜单。 Bldgs 显示结果,而房间因上述错误而失败。

从服务器检索到的建筑 JSON 看起来像这样

[{
  "code": "Bldgs",
  "value": "A"
}, {
  "code": "Bldgs",
  "value": "J"
}, {
  "code": "Bldgs",
  "value": "I"
}, {
  "code": "Bldgs",
  "value": "H"
}, {
  "code": "Bldgs",
  "value": "G"
}, {
  "code": "Bldgs",
  "value": "F"
}, {
  "code": "Bldgs",
  "value": "E"
}, {
  "code": "Bldgs",
  "value": "D"
}, {
  "code": "Bldgs",
  "value": "C"
}, {
  "code": "Bldgs",
  "value": "B"
}, {
  "code": "Bldgs",
  "value": "K"
}]

房间是这样的

[{
  "code": "Rooms",
  "value": "1"
}, {
  "code": "Rooms",
  "value": "7"
}, {
  "code": "Rooms",
  "value": "6"
}, {
  "code": "Rooms",
  "value": "4"
}, {
  "code": "Rooms",
  "value": "3"
}, {
  "code": "Rooms",
  "value": "2"
}, {
  "code": "Rooms",
  "value": "16"
}, {
  "code": "Rooms",
  "value": "15"
}, {
  "code": "Rooms",
  "value": "14"
}, {
  "code": "Rooms",
  "value": "13"
}, {
  "code": "Rooms",
  "value": "12"
}, {
  "code": "Rooms",
  "value": "11"
}, {
  "code": "Rooms",
  "value": "9"
}]

我试过了

   var roomList,bldgList= [];
   dropdowns.listdrops({'code':'Rooms'})
    .$promise
    .then(
        function(data) {
            $log.info("Rooms:" + data.length);
             if (typeof data != "undefined") {
                for(var i = 0, len = data.length; i < len; i++) {
                    roomList[i] = data[i].value;    //ERROR HERE        
                };   
             }                      
        }
    );

   dropdowns.listdrops({'code':'Bldgs'})
    .$promise
    .then(
        function(data) {
            $log.info("Blgds:" + data.length);
            if (typeof data != "undefined") {
                for(var i = 0, len = data.length; i < len; i++) {
                    bldgList[i] = data[i].value;    //NO ERROR         
                };                          
            } else {
                $log.info('ERROR: no Drops');
            }
        }, function(error) {
            $log.info('No Drop downs- Server error');
        }   
    );

我什至尝试绕过服务器服务调用并这样做

   var test =               [{"code":"Rooms","value":"1"},ode":"Rooms","value":"7"},{"code":"Rooms","value":"6"},{"code":"Rooms","value":"4"},{"code":"Rooms","value":"3"},{"code":"Rooms","value":"2"},{"code":"Rooms","value":"16"},{"code":"Rooms","value":"15"},{"code":"Rooms","value":"14"},{"code":"Rooms","value":"13"},{"code":"Rooms","value":"12"},{"code":"Rooms","value":"11"},{"code":"Rooms","value":"9"}];`
   for(var i = 0, len = test.length; i < len; i++) {
        roomList[i] = test[i].value;    //ERROR        
   }; 

您需要初始化roomList。 var roomList,bldgList= [];应该是

var roomList = [],
    bldgList = [];