Extjs 如何在另一个模块中使用一个模块的控制器?
我有以下文件夹结构:Extjs 如何在另一个模块中使用一个模块的控制器?,extjs,model-view-controller,Extjs,Model View Controller,我有以下文件夹结构: module1/ init.js controller/ module1controller.js view/ ... module2/ init.js controller/ module2controller.js view/ module2view.js 文件module1/init.js现在如下所示 Ext.application({ name:'m
module1/
init.js
controller/
module1controller.js
view/
...
module2/
init.js
controller/
module2controller.js
view/
module2view.js
文件module1/init.js
现在如下所示
Ext.application({
name:'module1',
appFolder:'/projects/modules/module1/',
requires:[
'Ext.container.Viewport',
'Ext.layout.container.Border'
],
controllers:['module1controller'], // Here I want to load controller from module2
autoCreateViewport:true
});
我想知道如何在此module1
视图和控制器中使用module2
尝试以下方法:
Ext.application({
paths: {
'm2': "../module2"
},
name:'module1',
appFolder:'/projects/modules/module1/',
requires:[
'Ext.container.Viewport',
'Ext.layout.container.Border'
],
controllers:['module1controller', 'm2.module2controller'],
autoCreateViewport:true
});
谢谢我马上查。有一些麻烦。如果
m2
只是“./module2”
,则浏览器无法找到module2控制器。但是,如果我将其更改为“./module2/controller”,那么它会尝试在”./module2/controller/view/“
中查找module2view.js
,这是不对的。我希望,你知道怎么解决这个问题。看来我找到了一个正确的方法。m2应保留为“./module2”,但控制器制动器内部应为:控制器:['module1controller','m2.controller.module2controller']
。在这种情况下,将加载所有脚本。对于所有必需的视图和存储,您需要将它们添加到requires中。requires:['m2.view.module2view']这里m2是module2的路径。是的,我知道这一点(但我想我在控制器中使用了相对路径,这是第一次崩溃的主要原因)。现在效果很好。谢谢你,先生!PS.从来都不知道Sencha的MVC模式如此简洁。