2011-10-01 42 views
1

我想克隆浮动窗格对象,如下所示。克隆dojo浮动窗格

var pFloatingPane = new dojox.layout.FloatingPane({ 
        title: "A floating pane", 
        resizable: true, 
        dockable: true, 
        style: "position:absolute;top:0;left:0;width:136px !important;height:100px;visibility:visible;", 
        id: "pFloatingPane" 
       }).placeAt(dojo.byId("gridContainer")); 
var secondPane = dojo.clone(pFloatingPane); 

但是当我使用chrome javscript调试工具进行调试时,它给出了以下错误。

Uncaught TypeError: Cannot read property 'id' of undefined 

但eventhough我没有在初始化点给一个ID它正常工作与下列之一。

var topContentPane1 = new dijit.layout.ContentPane(
        { 
         region: "top", 
         splitter: true, 
         minSize : 10, 
         maxSize : 84 
        }, 
        document.createElement("div") 
       ); 
var secondOne = dojo.clone(topContentPane1); 

有人可以告诉我如何解决这个问题。在此先感谢

回答

0

我不确定是否支持克隆Widgets行为1。他们都必须有一个唯一的ID(如果你自己没有通过一个ID,将会生成一个ID),并且我可以看到造成麻烦。也没有保证窗口小部件没有循环引用,像onClick等事件可能会搞砸。

是否有任何特殊原因需要克隆,以防止您使用简单的解决方案,如封装函数中的窗口小部件创建?

function make_pane(){ 
    new dijit.layout.ContentPane({ 
     //... 
    }); 
} 

var first = make_pane(); 
var second = make_pane();