diff options
| author | Misko Hevery | 2010-02-26 13:08:28 -0800 |
|---|---|---|
| committer | Misko Hevery | 2010-02-26 13:08:28 -0800 |
| commit | 6431efef8cb6d0c77bf107b09b64b6f013b75965 (patch) | |
| tree | 166d703a5ff1015d282d41ce529c0f091fb503ba /src/Widgets.js | |
| parent | b628de9758c313b106d22468f4b49bd223698fd5 (diff) | |
| download | angular.js-6431efef8cb6d0c77bf107b09b64b6f013b75965.tar.bz2 | |
corrected repeater not removing when hash(instead of array) shrinks.
Diffstat (limited to 'src/Widgets.js')
| -rw-r--r-- | src/Widgets.js | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/Widgets.js b/src/Widgets.js index 6d7530f0..74f70f21 100644 --- a/src/Widgets.js +++ b/src/Widgets.js @@ -665,29 +665,28 @@ RepeaterUpdater.prototype = { scope.set(this.iteratorExp, iterator); } } - var iteratorLength = iterator.length; var childrenLength = this.children.length; var cursor = this.view; var time = 0; var child = null; var keyExp = this.keyExp; var valueExp = this.valueExp; - var i = 0; + var iteratorCounter = 0; foreach(iterator, function(value, key){ - if (i < childrenLength) { + if (iteratorCounter < childrenLength) { // reuse children - child = self.children[i]; + child = self.children[iteratorCounter]; child.scope.set(valueExp, value); } else { // grow children var name = self.prefix + - valueExp + " in " + self.iteratorExp + "[" + i + "]"; + valueExp + " in " + self.iteratorExp + "[" + iteratorCounter + "]"; var childScope = new Scope(scope.state, name); - childScope.set('$index', i); + childScope.set('$index', iteratorCounter); if (keyExp) childScope.set(keyExp, key); childScope.set(valueExp, value); - child = { scope:childScope, element:self.template(childScope, self.prefix, i) }; + child = { scope:childScope, element:self.template(childScope, self.prefix, iteratorCounter) }; cursor.after(child.element); self.children.push(child); } @@ -695,10 +694,10 @@ RepeaterUpdater.prototype = { var s = new Date().getTime(); child.scope.updateView(); time += new Date().getTime() - s; - i++; + iteratorCounter++; }); // shrink children - for ( var r = childrenLength; r > iteratorLength; --r) { + for ( var r = childrenLength; r > iteratorCounter; --r) { this.children.pop().element.remove(); } // Special case for option in select |
