diff options
| author | Misko Hevery | 2011-02-12 10:12:10 -0800 |
|---|---|---|
| committer | Misko Hevery | 2011-02-16 00:49:16 -0500 |
| commit | 496e6bf9016d33a7cf2f4730d06a8655f01ca5cb (patch) | |
| tree | 068f86776aa08a8dce1dde05ef1e079f739073fc /src | |
| parent | 23b255a8b7481ff5c06004b3558c07f981c42276 (diff) | |
| download | angular.js-496e6bf9016d33a7cf2f4730d06a8655f01ca5cb.tar.bz2 | |
refactored quickClone to cloneNode and exposed it on jQuery
Diffstat (limited to 'src')
| -rw-r--r-- | src/Angular.js | 20 | ||||
| -rw-r--r-- | src/jqLite.js | 4 | ||||
| -rw-r--r-- | src/widgets.js | 5 |
3 files changed, 20 insertions, 9 deletions
diff --git a/src/Angular.js b/src/Angular.js index 5bd5e547..9b2c7ea6 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -453,10 +453,6 @@ 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)), @@ -1034,9 +1030,23 @@ function bindJQuery(){ // reset to jQuery or default to us. if (window.jQuery) { jqLite = window.jQuery; - jqLite.fn.scope = JQLite.prototype.scope; + extend(jqLite.fn, { + scope: JQLite.prototype.scope, + cloneNode: cloneNode + }); } else { jqLite = jqLiteWrap; } angular.element = jqLite; } + +/** + * throw error of the argument is falsy. + */ +function assertArg(arg, name) { + if (!arg) { + var error = new Error("Argument '" + name + "' is required"); + if (window.console) window.console.log(error.stack); + throw error; + } +}; diff --git a/src/jqLite.js b/src/jqLite.js index 206c1d70..01a563b6 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -251,8 +251,10 @@ JQLite.prototype = { return jqLite(this[0].parentNode); }, - clone: function() { return jqLite(this[0].cloneNode(true)); } + clone: cloneNode, + cloneNode: cloneNode }; +function cloneNode() { return jqLite(this[0].cloneNode(true)); } if (msie) { extend(JQLite.prototype, { diff --git a/src/widgets.js b/src/widgets.js index 66c9ecc5..58c22081 100644 --- a/src/widgets.js +++ b/src/widgets.js @@ -790,7 +790,7 @@ var ngSwitch = angularWidget('ng:switch', function (element){ forEach(cases, function(switchCase){ if (!found && switchCase.when(childScope, value)) { found = true; - var caseElement = quickClone(switchCase.element); + var caseElement = switchCase.element.cloneNode(); element.append(caseElement); childScope.$tryEval(switchCase.change, element); switchCase.template(caseElement, childScope); @@ -943,8 +943,7 @@ angularWidget("@ng:repeat", function(expression, element){ childScope.$position = index == 0 ? 'first' : (index == collectionLength - 1 ? 'last' : 'middle'); - cloneElement = quickClone(element); - lastElement.after(cloneElement); + lastElement.after(cloneElement = element.cloneNode()); cloneElement.attr('ng:repeat-index', index); linker(cloneElement, childScope); children.push(childScope); |
