dom.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. define("dojox/dtl/render/dom", [
  2. "dojo/_base/lang",
  3. "dojo/dom",
  4. "../Context",
  5. "../dom",
  6. "../_base"
  7. ], function(lang,dom,ddc,dddom,dd){
  8. /*=====
  9. dd = dojox.dtl;
  10. =====*/
  11. lang.getObject("dojox.dtl.render.dom", true);
  12. dd.render.dom.Render = function(/*DOMNode?*/ attachPoint, /*dojox.dtl.DomTemplate?*/ tpl){
  13. this._tpl = tpl;
  14. this.domNode = dom.byId(attachPoint);
  15. }
  16. lang.extend(dd.render.dom.Render, {
  17. setAttachPoint: function(/*Node*/ node){
  18. this.domNode = node;
  19. },
  20. render: function(/*Object*/ context, /*dojox.dtl.DomTemplate?*/ tpl, /*dojox.dtl.DomBuffer?*/ buffer){
  21. if(!this.domNode){
  22. throw new Error("You cannot use the Render object without specifying where you want to render it");
  23. }
  24. this._tpl = tpl = tpl || this._tpl;
  25. buffer = buffer || tpl.getBuffer();
  26. context = context || new ddc();
  27. var frag = tpl.render(context, buffer).getParent();
  28. if(!frag){
  29. throw new Error("Rendered template does not have a root node");
  30. }
  31. if(this.domNode !== frag){
  32. this.domNode.parentNode.replaceChild(frag, this.domNode);
  33. this.domNode = frag;
  34. }
  35. }
  36. });
  37. return dojox.dtl.render.dom;
  38. });