diff options
| author | Misko Hevery | 2010-07-09 14:45:29 -0700 |
|---|---|---|
| committer | Misko Hevery | 2010-07-09 14:45:29 -0700 |
| commit | 228b54aa2ea9c5faf9280f39317fdf07b2d49580 (patch) | |
| tree | 58c3b8afcd6b5bb9b3f54b68679e507e62dba59e | |
| parent | 00bb79039251ca6e4622df677fe4894552774bd5 (diff) | |
| download | angular.js-228b54aa2ea9c5faf9280f39317fdf07b2d49580.tar.bz2 | |
ng:repeat ignores prototype keys
| -rwxr-xr-x | java | 2 | ||||
| -rw-r--r-- | src/directives.js | 3 | ||||
| -rw-r--r-- | test/directivesSpec.js | 8 |
3 files changed, 9 insertions, 4 deletions
@@ -0,0 +1,2 @@ +#!/bin/sh +/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Commands/java $@ diff --git a/src/directives.js b/src/directives.js index 1b422331..a333c4c4 100644 --- a/src/directives.js +++ b/src/directives.js @@ -162,8 +162,9 @@ angularWidget("@ng:repeat", function(expression, element){ var children = [], currentScope = this; this.$onEval(function(){ var index = 0, childCount = children.length, childScope, lastElement = reference, - collection = this.$tryEval(rhs, reference); + collection = this.$tryEval(rhs, reference), is_array = isArray(collection); for ( var key in collection) { + if (is_array && !collection.hasOwnProperty(key)) break; if (index < childCount) { // reuse existing child childScope = children[index]; diff --git a/test/directivesSpec.js b/test/directivesSpec.js index 836c51e8..df0b5b94 100644 --- a/test/directivesSpec.js +++ b/test/directivesSpec.js @@ -93,15 +93,17 @@ describe("directives", function(){ it('should ng:repeat over array', function(){ var scope = compile('<ul><li ng:repeat="item in items" ng:init="suffix = \';\'" ng:bind="item + suffix"></li></ul>'); - scope.$set('items', ['misko', 'shyam']); + Array.prototype.extraProperty = "should be ignored"; + scope.items = ['misko', 'shyam']; scope.$eval(); expect(element.text()).toEqual('misko;shyam;'); + delete Array.prototype.extraProperty; - scope.$set('items', ['adam', 'kai', 'brad']); + scope.items = ['adam', 'kai', 'brad']; scope.$eval(); expect(element.text()).toEqual('adam;kai;brad;'); - scope.$set('items', ['brad']); + scope.items = ['brad']; scope.$eval(); expect(element.text()).toEqual('brad;'); }); |
