我正在使用liferay门户网站。我的所有portlet都基于Extjs4 MVC框架。问题是,当我向页面添加多个基于Extjs4的portlet时,其中一个将无法加载。我试验了应用程序的app.js文件。并发现当我将初始化代码添加到其中一个portlet时,所有这些都开始运行。
例如以下代码可用,
Ext.Loader.setPath('Ext', '/loc-treeview-portlet/loc-treeview/ext-4.0/src');
//loader path for the first app
Ext.Loader.setPath('LocTree', '/loc-treeview-portlet/loc-treeview/app');
//loader path for the second app
Ext.Loader.setPath('ServiceTree', '/service-layer-portlet/service-treeview/app');
// Instantiate the apps which I have created by extending Ext.app.Application
Ext.create('LocTree.app.LocTreeApplication');
Ext.create('ServiceTree.app.ServiceTreeApplication');
但我不能在实际的门户中这样做,因为事先并不知道哪个extjs4应用程序会在页面中。有没有人知道如何让这些应用程序独立工作?
答案 0 :(得分:0)
也许您可以将应用程序定义提取到页面模板中,就像您知道只有一个应用程序启动事件一样。然后每个portlet本质上都是一个带有自己的控制器的视图。您需要在控制器上手动调用init()。
答案 1 :(得分:0)
问题似乎是ExtJS4中的文档'ready'事件只初始化给定页面中的一个app(portlet)。所以我所做的是将所有代码app.js文件包装在AUI()。ready()调用中。
AUI().ready(function(){
// all app.js code here
});