Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取控制器内js对象中的数组大小时出现问题_Javascript_Angularjs_Angularjs Scope_Angularjs Controller - Fatal编程技术网

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