私が現在取り組んでいる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 modeとProduction Modeのスクリーンショット
ここで私は行方不明だと思いますか?
更新: これは、ブラウザの画面サイズから、実行時に計算されたような問題は、GridPanelのHeight
です。したがって、コンポーネントがインスタンス化されるとき、Heightはまだ計算されていませんでした。愚かな間違い:
解決しませんでした – Khosrow
プロダクションモードではどのようなエラーが発生していますか? – dbrin
何もありません!単にサブアイテムをレンダリングしません。私はちょうど今それをチェックし、GridのStoreでも動作していて、コンソールでXHRのログを見ることができるという奇妙な点があります。 – Khosrow