Запуск нескольких приложений extjs4 на странице портала liferay - PullRequest
0 голосов
/ 25 января 2012

Я использую портал Liferay для веб-сайта.Все мои портлеты основаны на среде Extjs4 MVC.Проблема в том, что когда я добавляю на страницу несколько портлетов на основе Extjs4, один из них не загружается.Я экспериментировал с файлами app.js приложений.и обнаружил, что когда я добавил код инициализации в один из портлетов, все они запускаются.

например, следующий код работает,

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 будет на странице.Кто-нибудь знает, как заставить эти приложения работать независимо?

Ответы [ 2 ]

0 голосов
/ 31 января 2012

Кажется, проблема в том, что событие готовности документа в ExtJS4 инициализирует только одно приложение (портлет) на данной странице. Так что я сделал, чтобы обернуть весь файл кода app.js в вызов AUI (). Ready ().

AUI().ready(function(){
     // all app.js code here

});
0 голосов
/ 30 января 2012

Возможно, вы сможете извлечь определение приложения в шаблон страницы таким образом, чтобы вы знали, что существует только одно событие запуска приложения. Тогда каждый портлет по сути является представлением со своим собственным контроллером. Вам нужно будет вручную вызвать init () на контроллерах.

...