2013-04-18 7 views
5

こんにちは私は、アプリケーションのどこでも使用するグローバル変数を定義する必要があります。 グローバル変数ベースURLを私ののapp.jsに宣言します。その後、私は私のmodel.jsでbasedUrlを使用 app.jsグローバル変数sencha touch 2.1

//<debug> 
Ext.Loader.setPath({ 
    'Ext': 'touch/src',//Location of the sencha touch source files 
    'bluebutton': 'app', 



}); 
//</debug> 



Ext.application({ 
    name: 'bluebutton',//Application Path, all classes in you app. For eg blueButton.view.Main.case sensitive 

    views: ['Main', 

    'BlueButton.CouponMain', 
    'BlueButton.CouponList', 
    'BlueButton.CouponList2', 
    'BlueButton.CouponList3', 

    'BlueButton.TransactionMain', 


    ], 



    stores : [ 
    'BlueButton.GlobalVariable', 


    ], 

    models : ['BlueButton.GlobalVariable', 
    'BlueButton.MemberDetail', 


    ], 



    controllers: ['Main', 
    'BlueButton.MemberList', 


    ], 



    requires: [ 
     'Ext.MessageBox', 

    ], 

    icon: { 
     '57': 'resources/icons/Icon.png', 
     '72': 'resources/icons/Icon~ipad.png', 
     '114': 'resources/icons/[email protected]', 
     '144': 'resources/icons/[email protected]' 
    }, 

    isIconPrecomposed: true, 

    startupImage: { 
     '320x460': 'resources/startup/320x460.jpg', 
     '640x920': 'resources/startup/640x920.png', 
     '768x1004': 'resources/startup/768x1004.png', 
     '748x1024': 'resources/startup/748x1024.png', 
     '1536x2008': 'resources/startup/1536x2008.png', 
     '1496x2048': 'resources/startup/1496x2048.png' 
    }, 


    //--Global value-- 
    baseUrl: 'http://192.168.251.108:8080', 
    //--Global value-- 



    launch: function() { 

     // Destroy the #appLoadingIndicator element 
     Ext.fly('appLoadingIndicator').destroy(); 


     // Initialize the main view 

      var LoginLS = Ext.getStore('LoginLS'); 
      LoginLS.load(); 

      var record = LoginLS.getAt(0); 



      if(record != undefined){ 
       var sessionId = record.get('sessionId'); 
       if (sessionId !=undefined){ 
         var mainView = Ext.getCmp("mainview"); 
         if(!mainView){ 
         mainView = Ext.create('bluebutton.view.Main'); 
         } 

         Ext.Viewport.setActiveItem(mainView); 
       } 
       else 
       { 
         var loginView = Ext.getCmp("loginview"); 
         if(!loginView){ 
         loginView = Ext.create('bluebutton.view.Login'); 
         } 

         Ext.Viewport.setActiveItem(loginView); 
       } 
      } 
      else{ 
         var loginView = Ext.getCmp("loginview"); 
         if(!loginView){ 
         loginView = Ext.create('bluebutton.view.Login'); 
         } 

         Ext.Viewport.setActiveItem(loginView); 



//      //--Disable this line -- 
//       var mainView = Ext.getCmp("mainview"); 
//      if(!mainView){ 
//      mainView = Ext.create('bluebutton.view.Main'); 
//      } 

//      Ext.Viewport.setActiveItem(mainView); 
//       //--Disable this line -- 





       } 




//  Ext.create('bluebutton.view.TopMenuList'); 

    }, 

    init: function() { 
     this.callParent(arguments); 

    }, 


    onUpdated: function() { 
     Ext.Msg.confirm(
      "Application Update", 
      "This application has just successfully been updated to the latest version. Reload now?", 
      function(buttonId) { 
       if (buttonId === 'yes') { 
        window.location.reload(); 
       } 
      } 
     ); 
    } 
}); 

model.js

Ext.define('bluebutton.model.BlueButton.CouponList', { 
    extend: 'Ext.data.Model', 
    config: { 
     idProperty: 'couponId', 
     fields: [ 
      { name: 'couponId' }, 
      { name: 'couponName' }, 
      { name: 'description' }, 
      { name: 'amount' }, 
      { name: 'couponType' }, 

      { name: 'merchant_bbID' }, 
      { name: 'sessionId' }, 
      { name: 'deviceId' }, 



     ], 

     proxy: { 
      type: 'rest', 
      url: bluebutton.app.baseUrl +'/WebCommon/rest/BBWebService/getCouponList', 


      actionMethods: { 
       create: 'POST', 
       read: 'GET', 
       update: 'PUT', 
       destroy: 'DELETE' 
      }, 


         noCache: false, // get rid of the '_dc' url parameter 

        extraParams: { 
        sessionId: "1", 
         merchant_bbID: "merchant1", 

       }, 


//   timeout:1000, 
//   listeners: { 
//    exception: function(proxy, response, operation) { 
//      alert("Connection Problem"); 
//      Ext.Viewport.setMasked(false); // hide the load screen 
//      
//     } 
//    }, 

      reader: { 
       type: 'json', 
       rootProperty: 'couponList' 

      }, 

      writer: { 
       type: 'json', 

      }, 
     } 



    } 

}); 

下記参照してください。 ブラウザを使用して表示すると動作します。私は自分のアプリケーションをコンパイルする煎茶アプリのビルド・テストを使用する場合でも、

私は開くためにブラウザを使用し、それは私にエラーメッセージ 捕捉されない例外TypeErrorを示した:未定義のプロパティ「baseUrlに」を読み取ることができません。何か案が?

+0

以下の回答は役に立ちましたか? – Gendaful

答えて

16

プロダクションビルドを行うと、senchaアプリケーション内のすべてのファイルが縮小され、グローバル変数がコンテキストを失う可能性があります。

のutil/config.jsの

>第一のアプローチ

はutilの中のグローバル変数を宣言/ config.jsの

-

は、あなたの煎茶のアプリで

をグローバル変数を宣言するには、いくつかの方法があります

Ext.define('APP.util.Config', { 
    singleton : true, 
    alias : 'widget.appConfigUtil', 
     config : { 
     baseUrl : 'xx.xx.xx.xxx', 
    }, 
    constructor: function(config) { 
     this.initConfig(config); 
     this.callParent([config]); 
    } 
}) 

app.js

requires : [ 'App.util.Config'] 

ここでは、次のようにアプリケーションで使用できます。

var baseUrl = App.util.Config.getBaseUrl(); 

第二的アプローチ>

簡単な例

var baseUrl; 

Ext.define('classname,{Other things }); 
+0

ありがとうございます。 work.horray !!!! – user998405

0

クラス定義の前に、あなたの.jsファイル内のグローバル変数を宣言し

あなたapp.jsに追加変数。変数をテストするには、Google Chromeのコンソールにapp.app.VariableNameと入力します。 Chromeは自動的に自動完成します。

Ext.application({ 
    name: 'app', 

    /** 
    * Custom Variables 
    * Use app.app.baseUrl to access the value 
    */ 
    baseUrl : 'http://example.com', 
    variable01 : 'foo', 
    variable02 : 'bar', 

    ... 

}); 
+0

このアプローチは、モデルやストアの 'config'プロパティで使用したいグローバル変数では機能しません –