将 EXISTING dom 节点(比如我们的 div 元素)转换为给定类的 dijit(保留所有元素属性)的最佳方法是什么?我尝试将节点上的 dojoType 属性设置为给定的 dijit 类,但它似乎不起作用。我正在使用dojo 1.6。
谢谢!
将 EXISTING dom 节点(比如我们的 div 元素)转换为给定类的 dijit(保留所有元素属性)的最佳方法是什么?我尝试将节点上的 dojoType 属性设置为给定的 dijit 类,但它似乎不起作用。我正在使用dojo 1.6。
谢谢!
在运行时还是作为页面引导程序的一部分(控制 html)?
如果您使用标记解析器,节点层次结构可能会稍有变化,这是在您设置 dojoType 时启动的。为避免这种情况,您需要创建一个程序化小部件并将其附加为所述 DOMNode 的子级。所以,你基本上有三个选择
.placeAt(domNode)
比如说,你想扩展一个具有 contentpane 布局能力的节点(如果不是布局小部件,没有说 innerHTML 会发生什么,它取决于每个小部件的标记工厂):
<div id="getme" style="background-color:blue">
Contents
</div>
<script>
var n = dojo.byId('getme'); n.dojoType="dijit.layout.ContentPane";
dojo.require("dijit.layout.ContentPane"); dojo.require("dojo.parser");
dojo.parser.parse(n);
</script>
<div id="getme" style="background-color:blue"></div>
<script>
dojo.require("dijit.layout.ContentPane");
var w = new dijit.layout.ContentPane({ href: 'ajaxContents.html' });
w.startup();
w.placeAt('getme');
</script>
还有一种简单的方法是将节点传递给 dijit 构造函数:
var nodeToDigitize = dojo.query('#mynode')[0];
new myDijit({prop1: val1, ...}, nodeToDigitize);