dojo動態創建widget

    場景:最近需要在動態生成dojo widget,但是與以前不同的是,新建的這幾個dojo widget是在一個dijit.layout.BorderContainer下層,包含一些只有container dojoType的region屬性。

   具體實現方案:

  1. var cR=dijit.byId("cR"); 
  2. var ns=new ntms.s.SN(); 
  3. ns.attr("region", "top"); 
  4. ns.attr("class","s_n"); 
  5. cR.addChild(ns); 
  6. cR.startup(); 

   解釋如下:

      1,第一行,注意需要使用dijit.byId()來取得dijit實體,不能使用dojo.byId().在 Dojo 體系中,如果想通過 Dijit 的 id 來獲得 Dijit 實體,只能通過 dijit.byId()。而作用與 document.getElementById() 相同的 dojo.byId(),無法獲得任何 Dijit 實體。

      2,第二行,創建自定義的dijit實體。這是獲得dijit實體的第二種方法。

      3,第三行,第四行,設置dijit實體的屬性,包括borderContainer的region屬性,還有對應的css值。

      4,第五行,添加該dijit實體到已有節點下面。

      5,第六行,最重要的一行代碼,啓動上層digit實體的startup()函數進行解析。如果啓動ns.startup()則不能解析出上層的region屬性。

--------------------------------------------------------------------

這種場景在我們使用dojo進行客戶端應用時,爲加快啓動速度,延遲加載一些dojoType類型的tag。

如果是靜態創建dojoType的widget,則很容易。

如果使用靜態方式動態創建widget,則這種場景不能實現,因爲使用dojo.parser.parse()不能進行重新分析上層節點。

只好使用這種動態創建方式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章