diff options
| author | Kai Groner | 2012-01-19 22:39:32 -0500 |
|---|---|---|
| committer | Igor Minar | 2012-01-24 10:28:29 -0800 |
| commit | 56bcc04c54ed24c19204f68de52b8c30c00e08f0 (patch) | |
| tree | 5362e700f3d1c98231a97ebeddb6947ac9d49fdb /src | |
| parent | b2052d08a151e81ed01b76a3b73add6e799c8133 (diff) | |
| download | angular.js-56bcc04c54ed24c19204f68de52b8c30c00e08f0.tar.bz2 | |
feat(ng:class): support using map of classnames and conditions
enables <div ng:class="{'hide': !visible, 'warning': isAlert()}"...
Diffstat (limited to 'src')
| -rw-r--r-- | src/directives.js | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/directives.js b/src/directives.js index e9b678f8..eb35addb 100644 --- a/src/directives.js +++ b/src/directives.js @@ -527,8 +527,12 @@ function ngClass(selector) { scope.$watch(expression, function(newVal, oldVal) { if (selector(scope.$index)) { if (oldVal && (newVal !== oldVal)) { + if (isObject(oldVal) && !isArray(oldVal)) + oldVal = map(oldVal, function(v, k) { if (v) return k }); element.removeClass(isArray(oldVal) ? oldVal.join(' ') : oldVal); } + if (isObject(newVal) && !isArray(newVal)) + newVal = map(newVal, function(v, k) { if (v) return k }); if (newVal) element.addClass(isArray(newVal) ? newVal.join(' ') : newVal); } }); @@ -551,7 +555,8 @@ function ngClass(selector) { * * @element ANY * @param {expression} expression {@link guide/dev_guide.expressions Expression} to eval. The result - * of the evaluation can be a string representing space delimited class names or an array. + * of the evaluation can be a string representing space delimited class + * names, an array, or a map of class names to boolean values. * * @example <doc:example> |
