2011-06-09 55 views
19

我是ExtJS 4的新手,需要一些幫助來了解Ext.define的工作原理。如何在ExtJS 4中使用Ext.define?

實際上,我想要做的與門戶示例中的portlet類似,在我的應用程序中,我需要添加許多對象才能添加到不同的選項卡中,因此爲了組織我的代碼並且不只有一個非常大的腳本,我想在一個單獨的文件中定義我需要的每個組件,然後在需要時在主腳本中調用它(我將主要使用這些示例,所以這就是爲什麼我想知道Ext.define如何工作以便我可以適應這些例子並使它們按我想要的方式工作)。

我希望我很清楚。

並提前感謝您的幫助。

回答

22

Ext.define(字符串的className,對象數據,功能createdFn):Ext.Base

Ext.define is used to define a class. Example: 

// creates My.computer.NoteBook Class 
Ext.define('My.computer.NoteBook', { 

    extend:'Ext.panel.Panel', 

    config: { 

      hardware:'Dell', 
      os:'Linux', 
      price:500 
    }, 

    constructor:function(config) { 

      this.initConfig(config); 

      return this; 
    } 
}); 


// creates instance of My.computer.NoteBook Class 
var myComputer = Ext.create('My.computer.NoteBook', { 

    hardware:'MacBook Pro', 
    os:'Mac OS X', 
    price:1800 
}); 

因此,與Ext.define你做一個模具,巫婆你可以在很多情況下,以後使用。你可以定義寬度,高度,ID,CSS,所以稍後你可以稱之爲模具/類。你的情況,你可以定義一個類爲每個選項卡,然後當你做一個函數打開/創建一個標籤,你可以說:

if(existingTab){ 

    mainPanel.setActiveTab(existingTab); 

}else{ 

    mainPanel.add(Ext.create('My.computer.NoteBook', {id:tabId})).show(); 
} 
... 

你可以把每一個類在單獨的.js文件中,以後,在製作過程中,您將在一個縮小的.js文件中創建一個class.js文件,並將所有類都放在一起!

您可以定義一個類,然後說:

items: Ext.create("My.computer.NoteBook",{ 
     ... 
}) 
+0

非常感謝,我明白第一部分,雖然沒有真正得到第二個,但我可以使用'var panel1 = Ext.create('Ext.app.myPanel',{title:'panel 1', height:350});'然後在我的標籤中調用它,就像'items:[panel1]'一樣。我已經設法做到了這一點,並定義了一個面板和簡單的網格,**我的問題是內部的減薄變量和函數,就像[網格過濾示例](http://dev.sencha.com/deploy/) ext-4.0.1/examples/grid-filtering/grid-filter-local.html)我怎樣才能在ext.define單獨的腳本中做同樣的事情? – Armance 2011-06-09 10:10:28

+3

你可以在課堂上定義你的視圖,所有的方法和屬性,然後在項目中創建一個實例。你必須在某個地方創建一個實例。 – 2011-06-09 12:02:31

+0

謝謝,我可以稱它沒有問題,但定義它是問題..我得到的錯誤,你會看看我的其他[後](http://stackoverflow.com/questions/6292214/uncaught-typeerror-cannot -call-method-insert-of-undefined) – Armance 2011-06-09 12:04:44

14

的Ext JS 4擁有全新的方式來擴展...它的調用Ext.define,它結合了Ext.extend,Ext.reg和分機。 NS,我們必須在Ext JS中3和之前做成一個方法調用...

Ext.define('com.sencha.MyPanel', { 
    extend : 'Ext.panel.Panel', 
    alias : 'widget.mypanel', 
    ... 
    ... 
}); 

Ext.define需要兩個參數,第一個是完整的類名(將作爲Ext.ns創建路徑並將創建對象)和配置。在配置中,您可以使用extend config指定要擴展的類。您使用別名配置設置XType。別名配置有點不同,因爲它有兩個部分...第一部分是類型(在這種情況下是小部件),然後是XType(mypanel)。