dojo如何在innerHTML中获取id?

时间:2014-05-26 02:55:23

标签: dojo

我正在研究道场。我不知道如何解决这个问题。 我正在动态生成tabContainer,ContentPane,GridContainer,Portlet中的那些可用。我GirdContainer访问对象可以但我无法访问Portlet远。因为动态创建的所有东西都是字符串。我想访问对象ID,Portlet的标题和其他信息。寻求建议。

我的代码

 function(data){
   ++gridCounter;
   var cont='';
   cont+='<div dojoType="dojox.layout.GridContainer" class="test" doLayout="true" id="gc'+gridCounter+'" region="center" hasResizableColumns="false" opacity="0.3"  nbZones="1" allowAutoScroll="false" withHandles="true" dragHandleClass="dijitTitlePaneTitle" minChildWidth="200" minColWidth="10" style="height:50%;">';
   for(var i=0;i<data.Vidgets.length;i++){
   cont+='<div dojoType="dojox.widget.Portlet"  title="'+data.Vidgets[i].name+'" closable="false">'+data.Vidgets[i].name+'</div>';
   }
   cont+='</div>';
   cont+='<div dojoType="dojox.layout.GridContainer" class="test" doLayout="true" id="gc'+(++gridCounter)+'" region="center" hasResizableColumns="false" opacity="0.3" nbZones="3" allowAutoScroll="false" withHandles="true" dragHandleClass="dijitTitlePaneTitle" minChildWidth="200" minColWidth="40" style="height:50%;">';
   cont+='<div dojoType="dojox.widget.Portlet"  title="vidget5" closable="false">vidget5</div>';
   cont+='</div>';
   cont+='<div dojoType="dojox.layout.GridContainer" class="test" doLayout="true" id="gc'+(++gridCounter)+'" region="center" hasResizableColumns="false" opacity="0.3" nbZones="2" allowAutoScroll="false" withHandles="true" dragHandleClass="dijitTitlePaneTitle" minChildWidth="200" minColWidth="60" style="widht:50%;">';
   cont+='<div dojoType="dojox.widget.Portlet"  title="vidget6" closable="false">vidget6</div>';
   cont+='</div>';
   addTab(data.FormName,cont);
 }
 function addTab(name,cont){
  var tab=new dijit.layout.ContentPane({
        title:name,
        id:''+name,
        content:cont,
        class:'tab',
        closable: true,
        onClose:function(){
            return confirm('relly want to remove?');
        }
        });
    dijit.byId('tabContainer').addChild(tab);
 }

当我编写代码时,我可以访问GridContainer对象。

 var tabs=registry.byId("tabContainer");
 var cPane=tabs.get("selectedChildWidget");
 var grid=cPane.getChildren()[0];->access to GridContainer

但我无法访问Portlet对象,因为它是字符串(innerHTML) 我想aceess到Portlet对象。请帮助我!

1 个答案:

答案 0 :(得分:0)

就像任何布局小部件一样,dojox/layout/GridContainer也有方法getChildren()。因此,如果您可以访问GridContainer,则可以再次使用getChildren()方法检索该窗口小部件的子项(这些是portlet)。

例如:

var tabs = registry.byId("tabContainer");
var cPane = tabs.get("selectedChildWidget");
var grid = cPane.getChildren()[0]; // Access to GridContainer
var portlets = grid.getChildren(); // Returns an array of all portlets
                                   //  inside the GridContainer