Sencha Touch 2 アプリを作成し、プロダクション モード バージョンをビルドしました。ただし、製品ビルドで大きな問題が発生し、電話/タブレット モードで実行されています。
ST2 の現在のプロファイルの実装には、特定のプロファイルを有効にしてもすべてのビューが読み込まれるため、欠陥があるようです。私のアプリケーションでは、ビュー構成で xtype エイリアスを使用してビューを指定し、正しいビューを使用できるようにしたいと考えています。特別なコーディングなしでロードされた電話またはタブレットのプロファイル用。プロファイルからのすべてのビューが読み込まれている場合、これは機能しません (1 つのビューが常に別のビューをオーバーライドします)。
これを達成できる唯一の方法は、次のように、起動段階 (app.js 内) でプロファイルを動的に追加することでした。
Ext.application({
name: 'MyTestApp',
var activeProfile = Ext.os.is.Phone ? ['Phone'] : ['Tablet'];
requires: [ ... ],
profiles: activeProfile
});
これはうまくいきました。これは、正しいビューをロードしても、別のビューの構成内で xtype エイリアスを使用したり、コントローラーで ref を使用したりできることを意味します。ただし、製品ビルドを生成してコンソール ウィンドウをロードすると、次の両方が定義されていることに気付きました。
MyTestApp.views.phone.Login
MyTestApp.views.tablet.Login
通常、プロファイルによっては、タブレットまたは電話のバージョンが定義されていません。実稼働モードのビルドではすべての依存関係が解析され、プロファイルに関係なくすべてのビューが含まれているため、これが当てはまると思います。
したがって、起動コントローラーには、xtype からログイン ビューを作成するボタン ハンドラーがあります。
コントローラ:
refs: {
loginView: {
selector: 'loginview',
xtype: 'loginview',
autoCreate: true
}
}
ハンドラ:
var loginView = this.getLoginView();
開発モードでは、loginView 変数はプロファイルに応じてMyTestApp.views.tablet.LoginまたはMyTestApp.views.phone.Loginになります。
ここでインスタンス化された loginview が、実稼働モードのときにプロファイルに応じて正しいバージョンを取得するようにするにはどうすればよいですか?