dom.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. if(!dojo._hasResource["dojox.dtl.render.dom"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
  7. dojo._hasResource["dojox.dtl.render.dom"] = true;
  8. dojo.provide("dojox.dtl.render.dom");
  9. dojo.require("dojox.dtl.Context");
  10. dojo.require("dojox.dtl.dom");
  11. dojox.dtl.render.dom.Render = function(/*DOMNode?*/ attachPoint, /*dojox.dtl.DomTemplate?*/ tpl){
  12. this._tpl = tpl;
  13. this.domNode = dojo.byId(attachPoint);
  14. }
  15. dojo.extend(dojox.dtl.render.dom.Render, {
  16. setAttachPoint: function(/*Node*/ node){
  17. this.domNode = node;
  18. },
  19. render: function(/*Object*/ context, /*dojox.dtl.DomTemplate?*/ tpl, /*dojox.dtl.DomBuffer?*/ buffer){
  20. if(!this.domNode){
  21. throw new Error("You cannot use the Render object without specifying where you want to render it");
  22. }
  23. this._tpl = tpl = tpl || this._tpl;
  24. buffer = buffer || tpl.getBuffer();
  25. context = context || new dojox.dtl.Context();
  26. var frag = tpl.render(context, buffer).getParent();
  27. if(!frag){
  28. throw new Error("Rendered template does not have a root node");
  29. }
  30. if(this.domNode !== frag){
  31. this.domNode.parentNode.replaceChild(frag, this.domNode);
  32. this.domNode = frag;
  33. }
  34. }
  35. });
  36. }