2012-03-22 17 views
2

私が現在取り組んでいるWebアプリケーションで奇妙な動作に直面しています。インターフェイスはExtJs 4で完全に構築されています。アプリケーションには、DebugとProductionという2つのモードがあります。

デバッグモードで、ユーザーがメニュー項目をクリックすると、依存するJavascriptファイルを同期して読み込みます。このような何か:
module.jsデバッグとミニモードでのExtJSアプリケーションの動作が異なります

Ext.define('Company.view.system.Module', { 
    extend: 'Company.view.abstract.Panel', 
    alias: 'widget.system.module', 

    /** 
    * These "_items" are built into the Object in `Company.view.abstract.Panel` 
    * using: Ext.create(this._items[i].clazz, conf); 
    * 
    * I'm just omitting the whole business logic there 
    */ 
    _items: [{ 
     flex: 2, 
     clazz: 'Company.view.system.module.Form' 
    }, { 
     flex: 5, 
     clazz: 'Company.view.system.module.HtmlEditor' 
    }] 
}); 

Ext.define('Company.view.system.module.Form', { 
    extend: 'Company.view.abstract.Form', 
    alias: 'widget.system.module.form', 

    items: [{ 
     xtype: 'fieldset', 
     title: 'Module Grid', 

     items: [{ 
     xtype: 'system.module.grid' 
     }] 
    }] 
}); 

Ext.define('Company.view.system.module.Grid', { 
    extend: 'Company.view.abstract.Grid', 
    alias: 'widget.system.module.grid', 

    columns: [{ 
     ... 
    }], 

    afterLayout: function() { 
     this.callParent(arguments); 
     alert('after layout'); 
    } 
}); 

Ext.define('Company.view.system.module.HtmlEditor', { 
    extend: 'Company.view.abstract.HtmlEditor', 
    alias: 'widget.system.module.htmleditor', 

    ... 
}); 

デバッグモードで期待どおりにすべての作業:モジュールのJavaScriptファイルの

for (var i = 0; i < config.dependency.length; i++) { 
    var element = document.createElement('script'); 

    element.onload = callback; 
    element.onreadystatechange = function() { 
     if (element.readyState == 'loaded' || element.readyState == 'complete') { 
     callback(); 
     } 
    }; 
} 

一つは、このようなものです。しかし、プロダクションモードでは、メニュークリックイベントの後に依存モジュールをロードするのではなく、起動時(つまりViewPortがレンダリングされる前)にモジュール全体を単一の生成された難読化された難読化されたjavascriptファイル(modules.js)としてロードします。

生産モードでは、 "xtype"(上記のサンプルではCompany.view.system.module.Grid)を使用してインスタンス化されたすべてのアイテムはレンダリングされません。

Debug modeProduction Modeのスクリーンショット

ここで私は行方不明だと思いますか?

更新: これは、ブラウザの画面サイズから、実行時に計算されたような問題は、GridPanelのHeightです。したがって、コンポーネントがインスタンス化されるとき、Heightはまだ計算されていませんでした。愚かな間違い:

答えて

0

私はsystem.module.formで使用される前にsystem.module.grid定義を移動しようとします。

+0

解決しませんでした – Khosrow

+0

プロダクションモードではどのようなエラーが発生していますか? – dbrin

+0

何もありません!単にサブアイテムをレンダリングしません。私はちょうど今それをチェックし、GridのStoreでも動作していて、コンソールでXHRのログを見ることができるという奇妙な点があります。 – Khosrow

0

私は2つの異なるバージョンを持つことをお勧めします。あなたの理由は何ですか?

+0

さて、それは実際には2つの異なるバージョンではありません。開発にあたっては、多くのコメントや字下げなどでアプリケーションを作成し、サーバーに展開するだけです。次に、bashスクリプトを実行し、サーバー上のすべてを小さくして難読化します。その後、アプリケーションはファイルをピックアップして1つのファイルにマージし、クライアントに送付します – Khosrow

+0

Sencha SDKを使用してマシン上でミニチュア化してみませんか?これらは、私が思う2つの事実上同じバージョンです。 – sha

+0

私はあなたがデバッグ環境で持っているファイルの遅延ロードを指しています。 – sha

関連する問題