以Dojo声明方式插入动态PHP

时间:2014-03-11 11:27:39

标签: javascript dojo

是否可以将动态声明性代码插入到例如。一个borderContainer?我有一个borderContainer并希望将{center'内容替换为'/modules/example/example.php'等文件的内容:(我已将输出打印到我的控制台)

<div data-dojo-type="dijit/layout/TabContainer" data-dojo-props="region:'center'" id="centerPanel">
    <div data-dojo-type="dijit/layout/ContentPane" title="lala"> yeahh </div>
</div>

当我调用一个函数删除内容时,它没有错误。但是当我想添加动态内容时,我收到以下错误:Uncaught NotFoundError: Failed to execute 'appendChild' on 'Node': The new child element is null.。我想这是因为我没有真正定义元素(并且Dojo解析器必须解析代码)。

' add-declarative-dojo '的代码 - 函数:

require(["dojo/text!../modules/" + file], function(file){
    console.log(file);
    registry.byId(mainLayout).addChild(file);
});

是否有可能使这个工作?

1 个答案:

答案 0 :(得分:1)

这实际上比您尝试做的更容易。 dijit/layout/ContentPane窗口小部件是您在任何容器(dijit/layout/TabContainerdijit/layout/BorderContainer)内使用的组件,实际上有一个名为href的属性,您可以使用它。例如:

<div data-dojo-type="dijit/layout/TabContainer" data-dojo-props="region:'center'" id="centerPanel">
    <div data-dojo-type="dijit/layout/ContentPane" title="lala" data-dojo-props="href: 'myPage.php'"> yeahh </div>
</div>

您的代码无效的原因可能是因为您将HTML页面传递给addChild()函数,该函数只接受小部件,因为您可以在API docs中阅读。