aboutsummaryrefslogtreecommitdiffstats
path: root/src/directives.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/directives.js')
-rw-r--r--src/directives.js25
1 files changed, 9 insertions, 16 deletions
diff --git a/src/directives.js b/src/directives.js
index 6fc19eaf..d800aa80 100644
--- a/src/directives.js
+++ b/src/directives.js
@@ -565,25 +565,18 @@ angularDirective("ng:submit", function(expression, element) {
});
});
+
function ngClass(selector) {
return function(expression, element){
+ var existing = element[0].className + ' ';
return function(element){
- if(selector(this.$index)) {
- this.$watch(expression, function(newCls, oldCls) {
- var cls = element.attr('class');
- if (isArray(newCls)) newCls = newCls.join(' ');
- if (isArray(oldCls)) oldCls = oldCls.join(' ');
-
- // The time when newCls == oldCLs is when $watch just started
- if (newCls == oldCls) {
- cls += ' ' + newCls;
- } else {
- cls = cls.replace(' ' + oldCls, ' ' + newCls);
- }
-
- element.attr('class', cls);
- });
- }
+ this.$onEval(function(){
+ if (selector(this.$index)) {
+ var value = this.$eval(expression);
+ if (isArray(value)) value = value.join(' ');
+ element[0].className = trim(existing + value);
+ }
+ }, element);
};
};
}