From d607c65ce98f11d69d34f4f58ac176be80dd8237 Mon Sep 17 00:00:00 2001 From: Amit Mendapara Date: Fri, 20 Jul 2012 13:58:01 +0530 Subject: [PATCH 1/2] JQLiteClone should copy data (issue #1124). --- src/jqLite.js | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/jqLite.js b/src/jqLite.js index d012707650f9..75b512e13d6d 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -174,8 +174,36 @@ function JQLite(element) { } } +function JQLiteCloneData(src, dst) { + if (src.nodeType !== 1 || !jqLite.hasData(src)) + return; + + var data = jqLite(src).data(); + + forEach(data, function(value, key){ + jqLite(dst).data(key, value); + }); +} + function JQLiteClone(element) { - return element.cloneNode(true); + var clone = element.cloneNode(true); + + if (element.nodeType !== 1) + return clone; + + JQLiteCloneData(element, clone); + + var getAll = element.getElementsByTagName || element.querySelectorAll || function(){return []}, + srcAll = getAll.call(element, '*'), + dstAll = getAll.call(clone, '*'); + + for(var i = 0 ; i < srcAll.length ; i++) { + var src = srcAll[i], + dst = dstAll[i]; + JQLiteCloneData(src, dst); + } + + return clone; } function JQLiteDealoc(element){ From 128cfbb172fb5f36999f1fd1bd85023a43fa7b45 Mon Sep 17 00:00:00 2001 From: Amit Mendapara Date: Fri, 20 Jul 2012 14:01:51 +0530 Subject: [PATCH 2/2] Empty text nodes should not be wrapped (issue #1059). --- src/ng/compile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ng/compile.js b/src/ng/compile.js index 04a1a4388d0d..091fb8efb2ee 100644 --- a/src/ng/compile.js +++ b/src/ng/compile.js @@ -322,7 +322,7 @@ function $CompileProvider($provide) { // We can not compile top level text elements since text nodes can be merged and we will // not be able to attach scope data to them, so we will wrap them in forEach($compileNode, function(node, index){ - if (node.nodeType == 3 /* text node */) { + if (node.nodeType == 3 /* text node */ && node.childNodes.length /* non-empty */) { $compileNode[index] = jqLite(node).wrap('').parent()[0]; } });