Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 7ea2c7f

Browse files
HeberLZpetebacondarwin
authored andcommitted
fix(ngRepeat): add support to iterate an object's properties even if it does not inherit from Object
Closes #9964
1 parent 912cbdd commit 7ea2c7f

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/ng/directive/ngRepeat.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
427427
// if object, extract keys, in enumeration order, unsorted
428428
collectionKeys = [];
429429
for (var itemKey in collection) {
430-
if (collection.hasOwnProperty(itemKey) && itemKey.charAt(0) !== '$') {
430+
if (hasOwnProperty.call(collection, itemKey) && itemKey.charAt(0) !== '$') {
431431
collectionKeys.push(itemKey);
432432
}
433433
}

test/ng/directive/ngRepeatSpec.js

+20
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,26 @@ describe('ngRepeat', function() {
166166
expect(element.text()).toEqual('age:20|wealth:20|prodname:Bingo|dogname:Bingo|codename:20|');
167167
});
168168

169+
170+
it('should iterate over on object created using `Object.create(null)`', function() {
171+
element = $compile(
172+
'<ul>' +
173+
'<li ng-repeat="(key, value) in items">{{key}}:{{value}}|</li>' +
174+
'</ul>')(scope);
175+
176+
var items = Object.create(null);
177+
items.misko = 'swe';
178+
items.shyam = 'set';
179+
180+
scope.items = items;
181+
scope.$digest();
182+
expect(element.text()).toEqual('misko:swe|shyam:set|');
183+
184+
delete items.shyam;
185+
scope.$digest();
186+
expect(element.text()).toEqual('misko:swe|');
187+
});
188+
169189
describe('track by', function() {
170190
it('should track using expression function', function() {
171191
element = $compile(

0 commit comments

Comments
 (0)