aboutsummaryrefslogtreecommitdiffstats
path: root/src/service/compiler.js
diff options
context:
space:
mode:
authorVojta Jina2012-03-19 17:26:05 -0700
committerVojta Jina2012-03-20 10:39:43 -0700
commitf49eaf8bf2df5f4e0e82d6c89e849a4f82c8d414 (patch)
treec2e62392ed85027c37d8cf2b41def77804fc1135 /src/service/compiler.js
parentf701ce08f9d63be05fc3b92f57ad473e1e749b2d (diff)
downloadangular.js-f49eaf8bf2df5f4e0e82d6c89e849a4f82c8d414.tar.bz2
fix($compile): Merge interpolated css class when replacing an element
Diffstat (limited to 'src/service/compiler.js')
-rw-r--r--src/service/compiler.js9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/service/compiler.js b/src/service/compiler.js
index 4ac01a7c..85566f3c 100644
--- a/src/service/compiler.js
+++ b/src/service/compiler.js
@@ -729,6 +729,9 @@ function $CompileProvider($provide) {
// reapply the old attributes to the new element
forEach(dst, function(value, key) {
if (key.charAt(0) != '$') {
+ if (src[key]) {
+ value += (key === 'style' ? ';' : ' ') + src[key];
+ }
dst.$set(key, value, srcAttr[key]);
}
});
@@ -873,6 +876,12 @@ function $CompileProvider($provide) {
compile: function(element, attr) {
if (interpolateFn) {
return function(scope, element, attr) {
+ if (name === 'class') {
+ // we need to interpolate classes again, in the case the element was replaced
+ // and therefore the two class attrs got merged - we want to interpolate the result
+ interpolateFn = $interpolate(attr[name], true);
+ }
+
// we define observers array only for interpolated attrs
// and ignore observers for non interpolated attrs to save some memory
attr.$observers[name] = [];