9

ExtJS アプリケーションのグローバル変数をどこに追加すればよいか迷っています。app.js 内に追加できることを示すスタックオーバーフローのいくつかの提案を既に見ました。しかし、誰かがより具体的に言えますか?私の app.js は次のようになります。

Ext.application({

    launch: function() {..}

});

では、変数は正確にどこに行くのでしょうか? 起動機能で?外Ext.application

4

4 に答える 4

15

より良いアプローチは、そのようなグローバル定数を保持する別のクラスを作成することです。次に、必要に応じてその定数クラスをapp.jsに配置する必要があります。

Ext.define("App.Constants", {
         singleton  : true,   

         BASE_URL : "http://localhost:8080/",
         LABLE_HEADER : "geekrai.blogspot",
         TIMEOUT : 6000 
 });

これにより、クラスがロードされ、任意のプロパティ/グローバル値にアクセスできるようになります。私は私のブログで同じことを詳しく述べました:リンク

于 2013-10-05T13:45:12.477 に答える
7

独自のオブジェクト名前空間を宣言し、そこに追加します。

Ext.ns('My.Application.Globals');

My.Application.Globals.SomeValue = 5;
My.Application.Globals.SomeText = 'Hello World!';

ただし、グローバルは通常、どうしても必要な場合を除いて眉をひそめるので、可能であれば、グローバルを使用してみてください。

于 2012-12-13T17:31:46.917 に答える
4

私はあなたがすでに答えを受け入れたことを知っています。アプリで使用できる名前空間変数を含める 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
于 2012-12-13T18:08:32.010 に答える
3

に組み込まれている可能性のある機能は別としてExt、クロージャを作成するためにいつでも即時関数を使用できます。

(function(){
    var globalVariable = 'foo';    

    Ext.application({

        launch: function() { alert(globalVariable); }

    });

})();
于 2012-12-13T17:31:11.127 に答える