有没有办法使用dijit的BorderContainer
和ContentPane
使用现有的HTML /标记创建布局,并避免使用dojo / parse的.parse()
方法?
我正在尝试将RequireJS与dojo / dijit的svn trunk中的最新代码一起使用,但不能使用.parse()
,因为它依赖于RequireJS中不存在的require.on
方法。
请注意,我有一个现有的模板,并且无法以编程方式创建BorderContainer
,除非它需要一个参数来设置现有元素(也包含无法更改/删除的现有内容)。
答案 0 :(得分:2)
是的,可以通过编程方式创建所有小部件。这就是dojo / parser在内部所做的事情。
举个例子:
require(["dojo/ready", "dijit/layout/BorderContainer", "dijit/layout/ContentPane", "dijit/layout/TabContainer"], function(ready, BorderContainer, ContentPane, TabContainer){
ready(function(){
// create a BorderContainer as the top widget in the hierarchy
var bc = new BorderContainer({style: "height: 500px; width: 800px;"});
// create a ContentPane as the left pane in the BorderContainer
var cp1 = new ContentPane({
region: "left",
style: "height: 100px",
content: "hello world"
});
bc.addChild(cp1);
// create a TabContainer as the center pane in the BorderContainer,
// which itself contains two children
var tc = new TabContainer({region: "center"});
var tab1 = new ContentPane({title: "tab 1"}),
tab2 = new ContentPane({title: "tab 2"});
tc.addChild( tab1 );
tc.addChild( tab2 );
bc.addChild(tc);
// put the top level widget into the document, and then call startup()
document.body.appendChild(bc.domNode);
bc.startup();
});
});
答案 1 :(得分:0)
我不熟悉解析器中的require.on。 Dojo加载器应该符合RequireJS。
无论如何,我建议你将整个事情包装在一个小部件中 - 模板系统与解析器不同。然后,您可以以编程方式调用该主窗口小部件并传递您的选项。