我目前正在尝试启动我创建的ExtJs MVC应用程序,并将其集成到另一个应用程序中。由于不清楚的原因,它拒绝启动,也没有给出任何合理的信息来说明它为什么会发生,查看下面的代码,我能够确定init
函数运行到最后,而不是launch
或beforeLaunch
。Das.SubApp
也扩展了Ext.app.Controller
。
this.subApp = Ext.create('Das.SubApp', {
appFolder: '/Scripts/app/das/FBrowser',
name: 'FBrowser',
controllers: ['BrowerController'],
dependencies: {
css: [],
js: []
},
init: function() {console.log("initialized")},
beforeLaunch: function() {
console.log("Before launch");
},
launch: function () {
console.log("launched library");
}
以下是来自浏览器控制器的代码:
Ext.define('FBrowser.controller.BrowserController',{
extend: 'Ext.app.Controller',
views: ['browser.tree_dir',...],
stores: [...],
requires: ['FBrowser.Utilities'],
init: function() {
this.control({..})
有人知道可能出了什么问题吗?
编辑:好的,所以我似乎发现了部分问题,似乎没有设置应用程序路径,我仍然不明白为什么会这样,appFolder
不应该指向正确的位置吗?
这很容易;
Ext.app.Controller
没有
- 应用文件夹
- 名字
- 启动前
如果你以这种方式初始化它,它不会调用启动方法,因为这一切都已经完成,或者更好地说属于Ext.app.Application
控制器。另请注意,您只能有一个活动的Ext.app.Application
实例,否则会弄乱EventBus
(覆盖第一个Ext.app.Application
的总线)。即使您添加了这些属性(appFolder,名称),它们也根本不做任何事情,因为它们仅在派生自Ext.app.Controller
的Ext.app.Application
中使用
解决方案
Das.SubApp
需要Ext.app.Application
(如果不是真正需要,请不要扩展,因为无论如何您只能有一个实例处于活动状态)。
您可能也对这个答案或这个感兴趣