Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Dojo内容窗格中动态加载小部件_Javascript_Dojo - Fatal编程技术网

Javascript 在Dojo内容窗格中动态加载小部件

Javascript 在Dojo内容窗格中动态加载小部件,javascript,dojo,Javascript,Dojo,我有一个JSP页面,在TabContainer中有6个自定义小部件。代码如下所示: <div data-dojo-type="dijit/layout/TabContainer" data-dojo-props="region: 'center', gutters:false"> <div data-dojo-type="dijit/layout/ContentPane" title="<b>Registries</b>">

我有一个JSP页面,在TabContainer中有6个自定义小部件。代码如下所示:

<div data-dojo-type="dijit/layout/TabContainer" data-dojo-props="region: 'center', gutters:false">
    <div data-dojo-type="dijit/layout/ContentPane" title="<b>Registries</b>">
        <div data-dojo-type="my/custom/Widget"></div>
    </div>
    ...(5 more ContentPanes like this)
</div>
<div data-dojo-type="dijit/layout/ContentPane" title="<b>Registries</b>" data-dojo-props='href:"rest/dynamicWidgetHtml/my.custom.Widget/"'></div>

…(还有5个这样的内容窗格)
当页面加载时,每个选项卡加载每个小部件,速度非常慢。大多数时候,我只需要访问其中一个选项卡,而不关心其他选项卡,因此我决定动态加载此内容

为Dojo ContentPane指定href属性时,在选择该选项卡之前,不会加载或解析该内容。唯一的问题是,这意味着我必须创建6个新的.html文件,这些文件中除此之外什么都没有。这就像以编程方式加载小部件的声明方式。。。有点奇怪

有没有一种方法可以简单地告诉ContentPane我只希望它动态加载我的自定义小部件,而不必创建html标记?目前,我创建了一个Spring控制器方法,该方法接受一个带有“widget”属性的字符串,并返回一个div字符串,该字符串的数据dojo类型设置为widget名称,这是一种编程方式,用于定义以编程方式加载的声明性标记。。。只是越来越奇怪了!现在我所有的内容窗格都是这样的:

<div data-dojo-type="dijit/layout/TabContainer" data-dojo-props="region: 'center', gutters:false">
    <div data-dojo-type="dijit/layout/ContentPane" title="<b>Registries</b>">
        <div data-dojo-type="my/custom/Widget"></div>
    </div>
    ...(5 more ContentPanes like this)
</div>
<div data-dojo-type="dijit/layout/ContentPane" title="<b>Registries</b>" data-dojo-props='href:"rest/dynamicWidgetHtml/my.custom.Widget/"'></div>

其中“my.custom.Widget”是一个spring控制器路径变量


是否有任何方法可以简化此过程并消除调用服务器来构建div的需要,以便在选择选项卡时可以动态加载小部件?

想知道您对JavaScript和Dojo小部件的熟悉程度

我试图用一些假设来回答这些问题。
1) 假设数据dojo type=“my/custom/Widget”是一个自定义dojo小部件,即包含在javascript文件中的dojo小部件。
2) 您可以将函数附加到ContentPane的onShow事件,如下所示。

首先,您需要将函数附加到contentPane“onShow”事件。说myFirstTabContentPaneShowAction() 并指定一个具有唯一ID的元素标记。选择选项卡时,将触发onShow事件

<div dojoType="dijit.layout.ContentPane" onShow="myFirstTabContentPaneShowAction()">
    <div id="widget1" ></div>
</div>
希望有帮助。

“数据dojo类型”不是有效的javascript键,请使用引号。