我想获取我在控制器中检索的一些数据的大小 - 我尝试了以下代码;使用新的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
属性的数组 - 为什么我不能直接检索它?
编辑:调用console.log($scope.book['value'].length)
会给我这种类型错误:
TypeError: Cannot read property 'length' of undefined
答案 0 :(得分:2)
由于$ scope.book是一个promise,它可能在你的console.log上没有解析,并且会给你输入类型错误。
这样的事情可以解决你的问题
$scope.book.$promise.then(function(){
console.log($scope.book['value'].length);
});
大小函数是不必要的并且令人困惑,因为你在Object上设置它,但是试图获得数组的长度。