2012-02-16 16 views
6

フレームワークの新しいMVCパターンを使用して簡単なSencha Touch 2アプリケーションを作成しています。モデル、ストア、コントローラ、およびビューがあり、すべてがアプリケーション。ストアやビューでgetApplication()を使用できません

"this.getApplication()"を使用してこのスーパークラスの "Application"のインスタンスを取得する可能性があります。

そして今、問題があります。getApplication()は、コントローラ、ビュー、モデル、ストア内にある場合はapp-instanceだけを返し、「未定義」を返しています。

基本的に、私はこの動作の背後にある考えを理解することができます。あなたのビジネスはコントローラ、どこにもありません。したがって、ストア、ビュー、モデルなどのアプリインスタンスを知る必要はありません。

Okey but ..メインアプリケーションにグローバルプロパティを持たせるのは非常にうれしいです。

たとえば、アプリケーションでグローバルにwebservice-urlを定義し、必要な場所でその変数を使用したいと思います。残念ながら、私もこのURLを店舗に必要としています。

ここで、ストア内でこのグローバル変数にアクセスする方法は、私の名前空間を経由する方法です。 "this.getApplication()。serviceUrl"を使用する代わりに、 "NameOfMyApp.app.serviceUrl"という名前空間を使用したソリューションしか見つからず、これを解決する最善の方法ではありませんでした。

その問題に関するアイデアはありますか?いつでもどこからでもアプリインスタンスを取得するためのより良い、常に働く方法はありますか?または、アプリケーションに含まれていない場合、グローバル変数はどこに格納する必要がありますか?

答えて

3

最新のSencha Touch 2ベータ版のAppName.appプロパティでアプリケーションインスタンスにアクセスできます。

Ext.application({ 
    name: 'Sencha', 

    launch: function() { 
     // Logs the application instance 
     console.log(Sencha.app); 
    } 
}); 
+0

お返事ありがとうございました:)この可能性は私がドキュメントに気付いていた...しかし、私はそうするのが最善の方法ではないと思います。 アプリの名前をリファクタリングするとどうなりますか? this.getApplication()はアプリケーション名に依存しません – jebbie

+1

残念ながら、他の方法はありません。私はSencha Touch 2で働いています:) – rdougan

+1

これは使用していません:Sencha appビルドテストなど.AppNameオブジェクトにはもう "app"プロパティが含まれていません。 –

1

Ext.app.Application.appInstanceアプリ名にとらわれないソリューション

1

であるように私はExtJSのの4.1.1aとExt.app.Application.instanceで作業に見える唯一の解決策であるように思われます。コントローラからはthis.applicationを使用できます。

関連する問題