From 9e67da420b60a417204ab53e8a16aa291f2b1ca0 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Wed, 16 Feb 2011 11:53:11 -0500 Subject: Corrected an issue where properties inherited from __proto__ show up in ng:repeat. Closses #112 --- CHANGELOG.md | 3 +++ src/widgets.js | 2 +- test/widgetsSpec.js | 12 ++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ac2fecd..2548c831 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ - Change API angular.compile(..) to angular.compile(element)([scope], [cloneAttachFn]) - remove ng:watch directives since it encourages logic in the UI. +### Bug Fixes +- Corrected an issue where properties inherited from __proto__ show up in ng:repeat. + # 0.9.11 snow-maker (2011-02-08) # diff --git a/src/widgets.js b/src/widgets.js index d58e7789..fe808740 100644 --- a/src/widgets.js +++ b/src/widgets.js @@ -927,7 +927,7 @@ angularWidget('@ng:repeat', function(expression, element){ } for (key in collection) { - if (!is_array || collection.hasOwnProperty(key)) { + if (collection.hasOwnProperty(key)) { if (index < childCount) { // reuse existing child childScope = children[index]; diff --git a/test/widgetsSpec.js b/test/widgetsSpec.js index d4d0e43a..183fbe6a 100644 --- a/test/widgetsSpec.js +++ b/test/widgetsSpec.js @@ -727,6 +727,18 @@ describe("widget", function(){ expect(element.text()).toEqual('misko:swe;shyam:set;'); }); + it('should not ng:repeat over parent properties', function(){ + var Class = function(){}; + Class.prototype.abc = function(){}; + Class.prototype.value = 'abc'; + + var scope = compile(''); + scope.items = new Class(); + scope.items.name = 'value'; + scope.$eval(); + expect(element.text()).toEqual('name:value;'); + }); + it('should error on wrong parsing of ng:repeat', function(){ var scope = compile(''); -- cgit v1.2.3