ExtJs4學習(四):Extjs 中id與itemId的差別


   為了方便表示或是指定一個組件的名稱,我們一般會使用id或者itemId進行標識命名。

(推薦盡量使用itemId。這樣能夠降低頁面唯一標識而產生的沖突)


id:
  id是作為整個頁面的Component的唯一標識,這也意味着在整個頁面中僅僅同意有唯一一個名稱的id。同一時候這里的Component的id也將變為element中的id,所以假設出現了兩個,頁面將會出現崩塌變形等等不能夠想象的問題。


  而作為一個組件是必須有自己的唯一標識(id)的,在沒有設置Component的id的時候系統將自己主動為組件加入id

itemId:
  itemId是用於container底下的元件的。這也說明itemId僅僅是一個局部的元件標識名稱,在全局上是不須要遵循唯一性的。

   從上面的敘述中能夠看出一些使用上需注意的地方
  1. 若你要取得相關的Component 若是屬於container 請設置id

  2. 若是僅僅屬於某個container 底下的元件,請設置itemId;某些情況下當然你也能夠連同id 一起設置,比方須要改變css style,除此之外itmeid 還是優先的選擇

  3. getCmp 以及getComponent 是不一樣的,使用上必須注意。必須搭配id 以及itemid 使用

   如此一來id 與itemid 就會有從屬關系,非必要不需定義id。也不會造成在定義id 時須要編碼避免重覆。而由於itemid 是屬於某個id 底下的,所以即使itemid 重覆,也能夠利用唯一的id 利用Ext.getCmp 取得參照后,在接着使用getComponent 取得所屬itemId 的參照。


怎么獲取id和itemId的組件和元件(從以上能夠明顯的看出,itemId是個局部的元件名稱):

id: Ext.getCmp(id);

itemId:Ext.getCmp(id).getComponent(itemId);


再看一段代碼

var c = new Ext.panel.Panel({ 
    height: 300,
    renderTo: document.body,
    layout: 'auto',
    items: [
        {
            itemId: 'p1',
            title: 'Panel 1',
            height: 150
        },
        {
            itemId: 'p2',
            title: 'Panel 2',
            height: 150
        }
    ]
})
p1 = c.getComponent('p1'); 
p1 = c.child('#p1'); 

p2 = p1.ownerCt.getComponent('p2');
p2 = p1.ownerCt.child('p2');

p1,p2中的itemid換成id。用p1 = c.child('#p1')方式獲取; 相同也是能夠獲取到的,但肯定不合適。

你能夠想象下,假設你再創建了一個c呢,id就反復了。

我們能夠簡單的理解為id是全局變量,itemid是局部變量


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM