【问题标题】:cannot read property 'length' of undefined in angular无法读取角度未定义的属性“长度”
【发布时间】:2015-08-10 05:09:09
【问题描述】:

我有一个 json 数组,我正在尝试获取该数组的长度,但我得到一个未定义的错误。

 $http.post('http://localhost:8099/mescc/seci/tools/ManageSettings',addOrUpdateJson)
        .success(
            function(dat, status,
                headers, config) {
                 $scope.loading=false;
                 $scope.table=true;
                 $scope.allConfigDatabase = dat;

                 for (var i = 0, len = dat.data.length; i < len; i++)  
                 {
                    $scope.editingData[$scope.allConfigDatabase.data[i].id] = false;
                 }
                 $scope.searchParameter = "";
                 $scope.updateView=false;
                 $scope.$apply();
                })
                .error(
                function(data, status,headers, config) {                                        
           });

【问题讨论】:

  • 您检查过 dat.data 是什么吗? dat 可能不是你所期望的
  • 显然dat.data 是未定义的,不是数组。

标签: json angularjs


【解决方案1】:

POST 请求的响应位于成功函数的“dat”参数中。我指出这只是因为我看到您使用“数据”作为错误函数,可能是以前的重命名导致了错误。

此“未定义”错误意味着您的 json 响应没有“数据”属性。为了更清楚,它看起来不像:

{ foo: {}, bar: {}, data:[1,2,3,4] }

您可以使用angular提供的实用功能更好地在客户端检查:

if (angular.isArray(dat.data)) {
  //...
}

【讨论】:

    猜你喜欢
    • 2018-10-28
    • 2018-09-19
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    相关资源
    最近更新 更多