From 5f5d4feadbfa9d8ecc8150041dfd2bca2b2e9fea Mon Sep 17 00:00:00 2001 From: Per RovegÄrd Date: Sat, 16 Feb 2013 00:32:38 +0100 Subject: fix(ngClass): keep track of old ngClass value manually ngClassWatchAction, when called as a $watch function, gets the wrong old value after it has been invoked previously due to observation of the interpolated class attribute. As a result it doesn't remove classes properly. Keeping track of the old value manually seems to fix this. Closes #1637 --- src/ng/directive/ngClass.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/ng/directive') diff --git a/src/ng/directive/ngClass.js b/src/ng/directive/ngClass.js index 79c55d7a..d731118f 100644 --- a/src/ng/directive/ngClass.js +++ b/src/ng/directive/ngClass.js @@ -3,6 +3,7 @@ function classDirective(name, selector) { name = 'ngClass' + name; return ngDirective(function(scope, element, attr) { + var oldVal = undefined; scope.$watch(attr[name], ngClassWatchAction, true); @@ -26,13 +27,14 @@ function classDirective(name, selector) { } - function ngClassWatchAction(newVal, oldVal) { + function ngClassWatchAction(newVal) { if (selector === true || scope.$index % 2 === selector) { if (oldVal && (newVal !== oldVal)) { removeClass(oldVal); } addClass(newVal); } + oldVal = newVal; } -- cgit v1.2.3