Javascript 获取控制器内js对象中的数组大小时出现问题
我想获得我正在控制器中检索的一些数据的大小——我已经尝试了以下代码;两者都使用了新的Javascript 获取控制器内js对象中的数组大小时出现问题,javascript,angularjs,angularjs-scope,angularjs-controller,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,
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
由于$scope.book是一个承诺,因此它很可能无法在您的console.log上解决,并给出类型错误 所以像这样的事情应该能解决你的问题
$scope.book.$promise.then(函数(){
log($scope.book['value'].length);
});
size函数是不必要的,而且容易混淆,因为您正在对象上设置它,但尝试获取数组的长度。添加size函数只是为了尝试解决此问题。编辑:是的,很有效,谢谢!刚才提到了大小函数,因为它有点混淆了问题的实质。现在试试,忘记了$promise