Я разработал PHP-фреймворк, который генерирует код ExtJS в форме приложения.
Это предполагает построение полного литерала объекта ExtJS на первомВызовите, например:
Ext.onReady(function(){
menuItemStart = new Ext.Panel({
id: 'panelStart',
title: 'Start',
html: 'This is the start menu item.',
cls:'menuItem'
});
...
, а затем навигация в приложении состоит из обработчиков событий , которые загружают файлы PHP через AJAX, которые выводят код ExtJS, а затем выполняют этот код с помощью этой функции:
function loadViewViaAjax(url, paramTargetRegion) {
Ext.Ajax.request({
url: url,
success: function(objServerResponse) {
var responseText = objServerResponse.responseText;
var scripts, scriptsFinder=/<script[^>]*>([\s\S]+)<\/script>/gi;
while(scripts=scriptsFinder.exec(responseText)) {
eval(scripts[1]);
}
}
});
}
Это хорошо работает.Тем не менее, у меня теперь есть такая ситуация, когда при загрузке страницы из PHP вместо запускаемого обработчика события ExtJS я получаю ошибки, которые меняются, но все они происходят из одного блока кода.в файле ext-all-debug.js
, а именно в строке 4236
и строке 4242
:
Кто-нибудь испытывал что-либо подобное или знает, что может быть причиной этого?
Приложение
Да @ChrisR, вот ошибка, которую я могу воспроизвести на моей машине:
Он говорит, что этополучаю сообщение об ошибке в четвертой строке этого кода, но если я щелкну по нему, я перейду к строке 4242
, показанной выше в коде библиотеки ExtJS.
<script type="text/javascript">
clearExtjsComponent(targetRegion);
var panel_form = new Ext.FormPanel({
labelWidth: 100,
frame:true,
style: 'margin: 10px',
title: 'Test Product (TEST PAGE 2)',
bodyStyle:'padding:5px 5px 0',
width: 500,
defaultType: 'textfield',
items: [{
fieldLabel: 'ID',
value: "111",
name: 'id',
width: 370,
hidden: false,
style: 'text-align: right',
name: 'id',
width: 50,
hidden: false,
},{
fieldLabel: 'Product',
value: "Paper",
xtype: 'displayfield',
name: 'product',
width: 370,
hidden: false,
},{
fieldLabel: 'Label',
value: "none",
name: 'product3',
width: 370,
hidden: false,
},{
fieldLabel: 'Label',
value: "first line\<br/>second line\<br/>third line",
xtype: 'displayfield',
height: 100,
xtype: 'displayfield',
name: 'product4',
width: 370,
hidden: false,
}
],
buttons: [{
text: 'Save',
handler: function() {
if(panel_form.getForm().isValid()){
panel_form.getForm().getEl().dom.action = 'backend/application/help/test';
panel_form.getForm().getEl().dom.method = 'POST';
panel_form.getForm().submit({
success : function(form, action) {
replace_region_with_uri_content('backend/modules');
}
})
} else {
Ext.Msg.minWidth = 360;
Ext.Msg.alert('Invalid Form', 'Some fields are invalid, please correct.');
}
}
},{
text: 'Cancel',
handler: function(){
replace_region_with_uri_content('backend/modules');
}
}]
});
replaceComponentContent(targetRegion, panel_form);
hideComponent(regionHelp);
</script>