aboutsummaryrefslogtreecommitdiffstats
path: root/src/ng/directive/ngClass.js
diff options
context:
space:
mode:
authorPete Bacon Darwin2013-04-16 12:29:56 +0100
committerPete Bacon Darwin2013-04-16 13:22:37 +0100
commit7898490779c2b2c359f1887c723ee260b3865639 (patch)
treeb05c0f5f83f44be5ba13cb388077ea8a3c09a9b8 /src/ng/directive/ngClass.js
parent0893e83c92108a057fff48a316b8a51dfec735ce (diff)
downloadangular.js-7898490779c2b2c359f1887c723ee260b3865639.tar.bz2
fix(ngClass): should remove classes when object is the same but property has changed
If you wire up ngClass directly to an object on the scope, e.g. ng-class="myClasses", where scope.myClasses = { 'classA': true, 'classB': false }, there was a bug that changing scope.myClasses.classA = false, was not being picked up and classA was not being removed from the element's CSS classes. This fix uses angular.equals for the comparison and ensures that oldVal is a copy of (rather than a reference to) the newVal.
Diffstat (limited to 'src/ng/directive/ngClass.js')
-rw-r--r--src/ng/directive/ngClass.js4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/ng/directive/ngClass.js b/src/ng/directive/ngClass.js
index d731118f..09efe0c8 100644
--- a/src/ng/directive/ngClass.js
+++ b/src/ng/directive/ngClass.js
@@ -29,12 +29,12 @@ function classDirective(name, selector) {
function ngClassWatchAction(newVal) {
if (selector === true || scope.$index % 2 === selector) {
- if (oldVal && (newVal !== oldVal)) {
+ if (oldVal && !equals(newVal,oldVal)) {
removeClass(oldVal);
}
addClass(newVal);
}
- oldVal = newVal;
+ oldVal = copy(newVal);
}