From 8e40e7070d44d11332adc1426b7076c2be570b2b Mon Sep 17 00:00:00 2001 From: Elliott Sprehn Date: Tue, 5 Oct 2010 07:08:18 +0800 Subject: Fix bug in IE where clone removes whitespace nodes. --- src/Angular.js | 4 ++++ src/directives.js | 2 +- src/widgets.js | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/Angular.js b/src/Angular.js index 3e53c755..f7351bdc 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -153,6 +153,10 @@ if (msie) { }; } +function quickClone(element) { + return jqLite(element[0].cloneNode(true)); +} + function isVisible(element) { var rect = element[0].getBoundingClientRect(), width = (rect.width || (rect.right||0 - rect.left||0)), diff --git a/src/directives.js b/src/directives.js index 4443cc9d..d2d3bf2c 100644 --- a/src/directives.js +++ b/src/directives.js @@ -176,7 +176,7 @@ angularWidget("@ng:repeat", function(expression, element){ if (keyIdent) childScope[keyIdent] = key; } else { // grow children - childScope = template(element.clone(), createScope(currentScope)); + childScope = template(quickClone(element), createScope(currentScope)); childScope[valueIdent] = collection[key]; if (keyIdent) childScope[keyIdent] = key; lastElement.after(childScope.$element); diff --git a/src/widgets.js b/src/widgets.js index 24eba900..127718ce 100644 --- a/src/widgets.js +++ b/src/widgets.js @@ -320,7 +320,7 @@ var ngSwitch = angularWidget('ng:switch', function (element){ childScope = createScope(scope); foreach(cases, function(switchCase){ if (switchCase.when(childScope, value)) { - var caseElement = switchCase.element.clone(); + var caseElement = quickClone(switchCase.element); element.append(caseElement); childScope.$tryEval(switchCase.change, element); switchCase.template(caseElement, childScope); -- cgit v1.2.3