ExtJS アプリケーションのグローバル変数をどこに追加すればよいか迷っています。app.js 内に追加できることを示すスタックオーバーフローのいくつかの提案を既に見ました。しかし、誰かがより具体的に言えますか?私の app.js は次のようになります。
Ext.application({
launch: function() {..}
});
では、変数は正確にどこに行くのでしょうか? 起動機能で?外Ext.application
?
ExtJS アプリケーションのグローバル変数をどこに追加すればよいか迷っています。app.js 内に追加できることを示すスタックオーバーフローのいくつかの提案を既に見ました。しかし、誰かがより具体的に言えますか?私の app.js は次のようになります。
Ext.application({
launch: function() {..}
});
では、変数は正確にどこに行くのでしょうか? 起動機能で?外Ext.application
?
より良いアプローチは、そのようなグローバル定数を保持する別のクラスを作成することです。次に、必要に応じてその定数クラスをapp.jsに配置する必要があります。
Ext.define("App.Constants", {
singleton : true,
BASE_URL : "http://localhost:8080/",
LABLE_HEADER : "geekrai.blogspot",
TIMEOUT : 6000
});
これにより、クラスがロードされ、任意のプロパティ/グローバル値にアクセスできるようになります。私は私のブログで同じことを詳しく述べました:リンク
独自のオブジェクト名前空間を宣言し、そこに追加します。
Ext.ns('My.Application.Globals');
My.Application.Globals.SomeValue = 5;
My.Application.Globals.SomeText = 'Hello World!';
ただし、グローバルは通常、どうしても必要な場合を除いて眉をひそめるので、可能であれば、グローバルを使用してみてください。
私はあなたがすでに答えを受け入れたことを知っています。アプリで使用できる名前空間変数を含める MVC の方法を追加したかっただけです。これらの「グローバル」には 1 つの注意点があります。クラス定義では使用できません。メソッドでアプリを参照できないことを意味しますExt.define({})
。それらはinitComponent
メソッドまたはそれ以降で使用する必要があります。
だからここに私がすることがあります:
Ext.application({
name:'MyApp',
appFolder:'js/app',
controllers:[ 'Main' ],
autoCreateViewport : true,
launch:function () {
console.log("App Launched!");
MyApp.app = this; //added this to get reference to app instance. IMPORTANT!
},
//variables used throughout the app
globals:{
myURL:'http://example.com',
magicNum:5
}
});
これらのアプリケーション全体の変数を使用するには、アプリの名前空間を参照するので、グローバル スペースを汚染しません。このような:
MyApp.app.gloabals.magicNum
に組み込まれている可能性のある機能は別としてExt
、クロージャを作成するためにいつでも即時関数を使用できます。
(function(){
var globalVariable = 'foo';
Ext.application({
launch: function() { alert(globalVariable); }
});
})();