javascript - 无法在 Controller 内的 js 对象中获取数组的大小

标签 javascript angularjs angularjs-scope angularjs-controller

我想获取我在 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

最佳答案

由于 $scope.book 是一个 promise ,它很可能在您的 console.log 上未解决并给您类型错误。

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

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

size 函数是不必要的且令人困惑,因为您将它设置在 Object 上,但试图获取数组的长度。

关于javascript - 无法在 Controller 内的 js 对象中获取数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25053819/

相关文章:

javascript - Highcharts (柱形图、烛台)在图表上的任意位置显示鼠标悬停工具提示,类似于折线图或面积图

javascript - 如何使用 JavaScript 清除浏览历史记录?

javascript - 如何获取可能具有未定义键的对象的值?

angularjs - 指令未加载

javascript - Ionic-AngularJS : Emitting Event To Parent Only ReBroadcasts To Child That Emitted Event

javascript - Pubnub - 取消订阅特定 channel 的所有活跃用户

javascript - 当 Socket.io 事件发出时保存到 MongoDB

javascript - 从 AngularJS 中的 $apply 或 $digest 循环中的指令更新模型

angularjs - 为什么我需要在 ng Repeat 中指定 $parent 而不是在与 ng Repeat 相同的元素上

javascript - 在 ui-router 状态之间发送事件