1

有没有办法使用 dijitBorderContainerContentPane现有的 HTML/标记创建布局并避免使用 dojo/parse 的.parse()方法?

我正在尝试将 RequireJS 与 dojo/dijit 的 svn 主干中的最新代码一起使用,但不能使用.parse(),因为它依赖require.on于 RequireJS 中不存在的方法。

请注意,我有一个现有模板并且无法以编程方式创建,BorderContainer除非它需要一个参数来设置现有元素(该元素也具有无法更改/删除的现有内容)。

4

2 回答 2

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();
    });
});
于 2013-01-05T20:03:47.857 回答
0

我不熟悉解析器中的 require.on 。Dojo 加载器应该是 RequireJS 兼容的。

无论如何,我建议您将整个内容包装在一个小部件中 - 模板系统与解析器不同。然后您可以以编程方式调用该主小部件并传递您的选项。

于 2013-01-02T01:40:13.247 回答