From 7053ca01e6ae270c88ae7f559ee3c04d4bb2ad6f Mon Sep 17 00:00:00 2001 From: John Hann Date: Thu, 9 Feb 2012 14:16:38 -0500 Subject: [PATCH] wire/dom/render as a plugin --- dom/render.js | 46 ++++++++++++++++++++--- test/dom-render.html | 88 +++++++++++++++++++++++++++++++++----------- 2 files changed, 106 insertions(+), 28 deletions(-) diff --git a/dom/render.js b/dom/render.js index da4f8a6..4d49e42 100644 --- a/dom/render.js +++ b/dom/render.js @@ -11,9 +11,9 @@ * http://www.opensource.org/licenses/mit-license.php */ -define(['../domReady'], function(domReady) { +define(['when', '../domReady'], function(when, domReady) { - var parentTypes, parseTemplateRx, getFirstTagNameRx; + var parentTypes, parseTemplateRx, getFirstTagNameRx, undef; parentTypes = { 'td': 'tr', @@ -53,14 +53,48 @@ define(['../domReady'], function(domReady) { return node; } - render.wire$plugin = { - factories: { - render: render - } + render.wire$plugin = function (ready, destroyed, options) { + return { + factories: { + render: domRenderFactory + } + }; }; return render; + + /** + * Creates rendered dom trees for the "render" factory. + * @param resolver + * @param spec + * @param wire + */ + function domRenderFactory(resolver, spec, wire) { + var parentRef, options; + + options = spec.render; + + domReady(function() { + + var futureTemplate, futureMixin, futureRoot; + + // get args from spec + futureTemplate = options.template ? wire(options.template) : ''; + if (options.mixin) { + futureMixin = wire(options.mixin); + } + if (options.at) { + futureRoot = wire(options.at); + } + + when.all([futureTemplate, futureMixin, futureRoot], function (args) { + return render.apply(undef, args); + }).then(resolver.resolve, resolver.reject); + + }); + } + /** * Finds the first html element in a string, extracts its tag name, * and looks up the natural parent element tag name for this element. diff --git a/test/dom-render.html b/test/dom-render.html index e0f6e05..ae21811 100644 --- a/test/dom-render.html +++ b/test/dom-render.html @@ -9,13 +9,18 @@ @@ -186,7 +229,8 @@

-
    +
      +

      \ No newline at end of file