将现有的dom节点(比方说我们是div元素)转换为给定类的dijit(保留所有元素属性)的最佳方法是什么?我试图在节点上将dojoType属性设置为给定的dijit类,但它似乎不起作用。我正在使用dojo 1.6。
谢谢!
答案 0 :(得分:0)
在运行时或作为页面引导程序的一部分(通过控制html)?
如果使用标记解析器,node-hierachy可能会稍微改变,这是设置dojoType时的问题。为避免这种情况,您需要创建一个程序化小部件并将其作为所述DOMNode的子级附加。所以,你基本上有三个选择
.placeAt(domNode)
说,你想要扩展一个带有contentpane布局capeabilities的节点(如果不是布局小部件,不会说innerHTML会发生什么,它取决于每个小部件的markupfactory):
<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>
答案 1 :(得分:0)
通过将节点传递给dijit构造函数,还有一种简单的方法:
var nodeToDigitize = dojo.query('#mynode')[0];
new myDijit({prop1: val1, ...}, nodeToDigitize);