angularjs - for - javascript check if object is empty

Checking if object is empty, works with ng-show but not from controller? (6)

I have a JS object declared like so

$scope.items = {};

I also have a $http request that fills this object with items. I would like to detect if this item is empty, it appears that ng-show supports this... I enter


and magically it works,I would also like to do the same from a controller but i can't seem to get it to work, it appears I may have to iterate over the object to see if it has any properties or use lodash or underscore.

Is there an alternative?

I did try

alert($scope.items == true);

but it always returns false , when the object is created and when populated with $http, so its not working that way.

Check Empty object

$scope.isValid = function(value) {
    return !value

If you couldn't have the items OBJ equal to null, you can do this:

$scope.isEmpty = function (obj) {
    for (var i in obj) if (obj.hasOwnProperty(i)) return false;
    return true;

and in the view you can do:

<div ng-show="isEmpty(items)"></div>

You can do

var ob = {};

Only if your browser supports ECMAScript 5. For Example, IE 8 doesn't support this feature.

See for more infos

Or you could keep it simple by doing something like this:

alert(angular.equals({}, $scope.items));

Or, if using lo-dash: _.empty(value).

"Checks if value is empty. Arrays, strings, or arguments objects with a length of 0 and objects with no own enumerable properties are considered "empty"."

another simple one-liner:

var ob = {};
Object.keys(ob).length // 0

you can check length of items