2012-07-05 127 views
6

在java和C++中,我們可以全局地存儲一個變量並從項目中的任何位置訪問它的值。 說,我一個名爲Residence類中,我保存residenceNumber這是一個INT一個叫houseNumberGlobalVariable全局變量。現在EXT JS中是否有全局變量

,我可以在項目的任何類訪問houseNumberGlobalVariable。以類似的方式,我可以使用EXTJS中是否有全局變量。

我需要從一個類的設定值,並從另一個訪問它。 EXT JS中的等效物是什麼?我不認爲EXTJS中有一個全局變量概念,但其中的等價物是什麼?

回答

3

只是聲明一個變量在app.js它將作爲全局變量這種方式。

var globalVar; 

您可以添加任何東西到像

globalVar.myStore=yourStore; 
+0

將所有global2變量保存在一個類中將很容易。那麼我可以使用@sha的方法存儲'view','store'嗎? – 2012-07-05 15:34:24

+1

是的,但我沒有試過!我通常將所有添加到相同的變種。像globalVar.myView,globalVar.myCtl。我不知道這裏的班級是怎樣的。 – Jom 2012-07-05 15:57:17

+0

我如何訪問存儲在'globalvar.mystore'中的'store'?它是var accessstore = globalvar.mystore; ?? – 2012-07-05 16:00:15

15

創建一個特殊的類,並把所有global變量存在。

Ext.define('MyApp.global.Vars', { 
    singleton: true, 
    .... 
    houseNumberGlobalVariable: undefined 

}); 

如果你需要在代碼的任何地方它的訪問只使用MyApp.global.Vars.houseNumberGlobalVariable

+0

我應該在哪裏創建這個文件?在'View'中? – 2012-07-23 15:20:52

+1

我建議爲這個類創建一個單獨的文件,或者把它放在main'app.js'中。 – sha 2012-07-23 23:05:21

+1

這是用ExtJS聲明全局變量的最好方法。太糟糕了不是答案。 – 2014-10-22 02:43:27

2

根據您的應用程序,你可以聲明全局變量。

方案1:聲明配置

裏面如果你要使用getter/setter方法(即經常改變的變量,然後去基於配置)

聲明的Appconstants

Ext.define('Practice.utilities.AppConstants', { 
     alias:'widget.AppConstants', 
     config:{ 
     mainVarTest : 'mainVarTest', 
     }, 
    testvar: 'Testing value', 
    foo: 'bar', 
    meh: 42, 
    constructor : function(options){ 
    this.initConfig(options); 
    } 
}); 

調用變量

var AppConstants = Ext.widget("AppConstants"); 
console.log(AppConstants.getMainVarTest()); 

方案2:Singleton類

內聲明如果您的應用程序需要全局變量,但它不會被改變的內部應用程序了。這個類有助於只加載一次常量變量。 (即你不會改變變量)。該類型是您的應用程序

聲明

Ext.define('Practice.utilities.AppConstants', { 
      alias:'widget.AppConstants', 
      singleton : true, 
      testvar: 'Testing value', 
       foo: 'bar', 
       meh: 42, 
      }); 

調用

var AppConstant=Practice.utilities.AppConstants; 
console.log(AppConstant.foo); 

方案3套:聲明爲靜

靜是靜態變量(完全相同作爲Java)。使用靜態變量的優點是變量的生命期是明確清除之前的無限期更長的時期。

Ext.define("Practice.utilities.AppConstants",{ 
     statics  : { 
     mainVarTest : 'mainVarTest' 
      }, 
     }); 
1

我注意到這裏缺少的一件東西是Sencha Architect程序關於如何創建全局變量的解決方案。

轉到項目檢查器上的「應用程序」節點。接下來點擊配置搜索/過濾器框,這不僅用於搜索,還用於創建配置條目。當你第一次看這個盒子時,它會有一個Smokey預填充文本Filter Configs...

輸入您的全局變量名稱,您會注意到在下面的列表中找不到任何東西,(如果該值在配置列表中找到,那麼您已經擁有此變量或使用關鍵字)。在文本框右邊的鎖定圖標是一個「添加」按鈕。點擊「添加」按鈕將您的全局變量添加到應用程序中。

因此可以說我們已經創建Foo變量在這一點上。您現在將在您的配置列表中看到一個條目。在這個條目的左邊是一個省略號按鈕,這是目前指定我們創建的新變量是一個字符串。點擊按鈕並將其更改爲不同的「數字」字段。爲這個新變量輸入一個值,你現在完成了,你有一個全局變量。

那麼你如何訪問這個新創建的變量?這裏是一個將全局填充爲局部變量的示例代碼。

var bar= MyApp.app.Foo; 

的「MyApp的」引用是爲您創建的應用程序的應用name配置設置。您可以通過在name上進行篩選,在Application節點的配置設置中找到相同的值。