aboutsummaryrefslogtreecommitdiffstats
path: root/src/ng/directive/ngClass.js
diff options
context:
space:
mode:
authorPer RovegÄrd2013-02-16 00:32:38 +0100
committerIgor Minar2013-02-18 20:25:43 -0800
commit5f5d4feadbfa9d8ecc8150041dfd2bca2b2e9fea (patch)
tree33aeab565f5d585f41c26bd95fa957f88d797ca7 /src/ng/directive/ngClass.js
parent791804bdbfa6da7a39283623bd05628a01cd8720 (diff)
downloadangular.js-5f5d4feadbfa9d8ecc8150041dfd2bca2b2e9fea.tar.bz2
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
Diffstat (limited to 'src/ng/directive/ngClass.js')
-rw-r--r--src/ng/directive/ngClass.js4
1 files changed, 3 insertions, 1 deletions
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;
}