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