无法在控制器内的js对象中获取数组的大小

时间:2014-07-31 08:08:58

标签: javascript angularjs angularjs-scope angularjs-controller

我想获取我在控制器中检索的一些数据的大小 - 我尝试了以下代码;使用新的Object.size函数并尝试直接通过length获取.length属性

$scope.book = DataService.getBooks();
console.log($scope.book);

-- this function was only added to try and solve the problem.
Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
    if (obj.hasOwnProperty(key)) size++;
}
return size;
};

console.log(Object.size($scope.book['value']))
console.log($scope.book['value'].length)

这是存储在变量中的内容的图片。正如您所看到的,.value显然是一个包含3个对象和length属性的数组 - 为什么我不能直接检索它?

enter image description here

编辑:调用console.log($scope.book['value'].length)会给我这种类型错误:

TypeError: Cannot read property 'length' of undefined

1 个答案:

答案 0 :(得分:2)

由于$ scope.book是一个promise,它可能在你的console.log上没有解析,并且会给你输入类型错误。

这样的事情可以解决你的问题

$scope.book.$promise.then(function(){ console.log($scope.book['value'].length); });

大小函数是不必要的并且令人困惑,因为你在Object上设置它,但是试图获得数组的长度。