我試圖將ExtJS4應用程序拆分爲模塊。ExtJS4模塊化與獨立控制器?
- app
- store
- controller
- model
- view
- module
- m1
- model
- view
- controller
- m2
- model
- ...
的問題是,當我啓動應用程序,它的inits M1控制器之一時,控制器不具有this.control()函數。
- 編輯 -
我在控制器文件夾內定義了一個類。
Ext.define('App.module.ping.controller.Ping', {
extend: 'Ext.app.Controller',
requires: [
'App.module.ping.view.PingPanel'
],
init: function() {
this.control({
'#app.module.ping': {
render: this.onPanelRendered
}
});
},
onPanelRendered: function() {
...
}
});
後來我打電話
Ext.create('App.module.ping.controller.Ping').init();
,但我得到這個錯誤:
Uncaught TypeError: Cannot call method 'control' of undefined
Ext.define.control./lib/extjs-4.1.0/src/app/Controller.js:414
Ext.define.init./app/module/ping/app/controller/Ping.js:11
Ext.define.init./app/module/ping/app/Module.js:11
(anonymous function)app.js:17
(anonymous function)app.js:35
Module.js與創建()調用 Ping.js的文件是文件與定義( )調用
- EDIT2 -
病理例如:
輸入:
Ext.define('MyController', {
extend: 'Ext.app.Controller',
init: function() { console.log('initialized'); }
});
輸出:
function constructor() {
return this.constructor.apply(this, arguments);
}
輸入:
Ext.create('MyController');
輸出:
constructor
inpu T:
MyController.create();
輸出:
constructor
- EDIT3 -
創建時,控制器需要在配置對象的應用程序對象。應用程序對象將自身添加到所有控制器,這些控制器是用手工創建的而不是。它調用如下所示:
Ext.create('App.controller.Users', { application: this, ... });
後來它使用應用程序對象將控制調用重定向到它。
control: function (config) { this.application.control(config) };
因此,我可能會實施一些機制,當我創建它們時,會自動將這些應用程序添加到這些控制器。
你是什麼意思'控制器沒有控制()功能?你能發佈一些你的代碼嗎? – sha 2012-04-17 17:15:39
錯誤消息不幫助我。控制被稱爲這個,但它說這是未定義的...笏?! – 2012-04-18 09:06:06
恭喜發現解決方案!可能它會依靠你的首選方法來組織源代碼:)我發現ExtJs依賴於目錄結構在幾個地方,並決定不發明任何東西,並按照他們的建議組織事情。 – sha 2012-04-18 18:22:25