2014-01-06 29 views
0

我有一個應用程序,我必須在單個頁面上重複一個自定義組件,說200次,並保存每個組件的引用。我嘗試使用for循環來添加它,但是這樣做會給我一個腳本錯誤。有沒有其他方法可以在extjs中重複使用自定義組件? 這是我使用的代碼。在extjs中重複一個自定義元素

Ext.application({ 
requires: ['Ext.container.Viewport'], 
name: 'Excel', 

launch: function() { 
    Ext.define('ExcelCell',{ 
      extend: 'Ext.panel.Panel', 
      itemcls: 'excelCell', 
      height: 20, 
      width: 64 
     }); 

    var port = Ext.create('Ext.container.Viewport', { 
     layout: 'absolute' 
    }); 


    var totalRowsToDraw = port.height/20; 
    var totalColumnsToDraw = port.width/64; 

    var cellDictionary = new Object(); 
    var cell; 

    for(var r=0; r < totalRowsToDraw ;r++){ 
     for(var c=0; c < totalColumnsToDraw ;c++){ 
      cell = Ext.create('ExcelCell'); 
      cell.x = c*64; 
      cell.y = r*20; 
      port.add(cell); 
      cellDictionary[r+','+c] = cell; 
     } 
    } 
} 
}); 

而且我的CSS代碼是

.excelCell{ 
padding-bottom: 0; 
padding-left: 0; 
padding-right: 0; 
padding-top: 0; 
border: 1; 
border-style: solid; 
border-color: #B7BABC; 
background-color: #000000; 
} 
+0

工作正常:http://jsfiddle.net/XGdu9/(但我認爲你更喜歡使用'XTemplate'或'容器'或'盒'代替面板') –

+0

當我使用Hbox或Vbox我沒有得到邊界只爲面板我正在獲取圍繞單元格的邊框。我是ExtJs的新手,所以我沒有深入的知識爲什麼會發生這種情況。 – Ashok

回答

0

您的代碼完美的作品。我唯一想到的是,也許你想用其他方法使用cellDictionary

如果是這樣的話,你想,而不是使之全局入店,:

var cellDictionary = {}; 

你必須做的:

Excel.cellDictionary = {}; 

然後,對其進行訪問,你」 d做一些像Excel.cellDictionary["2,2"](也許這是顯而易見的)

希望這有助於。乾杯

+0

它工作正常嗎?因爲對我來說,當我在Firefox中運行它時,它會引發無響應的腳本錯誤,甚至不會在Chrome和IE中打開它。 – Ashok

+0

嗯它適用於我在與ExtJs 4.1.1鉻,我在這裏檢查:http://jsfiddle.net/XGdu9/ –

+0

http://jsfiddle.net/XGdu9/4/現在嘗試它會給錯誤 – Ashok

相關問題