#javascript #extjs #sencha-architect
#javascript #extjs #сенча-архитектор
Вопрос:
около 2 лет я создавал заявку в «Службе поддержки Sencha», где я объяснил и показал ошибку, которая нарушает работу всего моего приложения.
Итак, я снова открыл этот запрос и спросил, есть ли какое-либо решение, потому что мы хотим опубликовать наше приложение и нуждаемся в этой производственной сборке…
Ответ был «Пожалуйста, обратите внимание, что на данный момент нет временных рамок для решения проблемы ….» .. но вы можете заплатить больше денег .. после того, как вы подождали 2 года.. заплатили за наше программное обеспечение и поддержку .. даже если это ошибка..
Итак, я хотел бы попросить сообщество помочь мне с этим..
Если вы создадите следующее с помощью ExtJS версии 6.5.3 -> 7.2.1, modern Toolkit, И вам придется использовать SenchaCmd / SenchaArchitect для создания производственной сборки!
Ext.define('Test.view.main.Main', {
extend: 'Ext.tab.Panel',
xtype: 'app-main',
requires: [
'Ext.MessageBox',
'Ext.layout.Fit'
],
controller: 'main',
viewModel: 'main',
defaults: {
tab: {
iconAlign: 'top'
}
},
tabBarPosition: 'bottom',
tabBar: {
layout: {
type: 'box',
pack: 'start',
overflow: 'scroller'
}
},
items: [
// TODO - Replace the content of this view to suit the needs of your application.
{
title: 'Home',
iconCls: 'x-fa fa-home',
layout: 'fit',
// The following grid shares a store with the classic version's grid as well!
items: [{
xtype: 'mainlist'
}]
}, {
title: 'Users',
iconCls: 'x-fa fa-user',
bind: {
html: '{loremIpsum}'
}
}, {
title: 'Groups',
iconCls: 'x-fa fa-users',
bind: {
html: '{loremIpsum}'
}
}, {
title: 'Settings',
iconCls: 'x-fa fa-cog',
bind: {
html: '{loremIpsum}'
}
}
]
});
После сборки вы увидите ошибку, подобную этой:
app.js?_dc=1599337408898:46636 Uncaught TypeError: Cannot read property 'update' of undefined
at constructor.applyOverflow (app.js?_dc=1599337408898:46636)
at constructor.setter [as setOverflow] (app.js?_dc=1599337408898:5728)
at Ext.Configurator.configure (app.js?_dc=1599337408898:6036)
at constructor.initConfig (app.js?_dc=1599337408898:6675)
at constructor (app.js?_dc=1599337408898:10235)
at constructor (app.js?_dc=1599337408898:37826)
at constructor.callParent (app.js?_dc=1599337408898:6650)
at constructor (app.js?_dc=1599337408898:46423)
at new Ext.layout.Box (app.js?_dc=1599337408898:6978)
at Ext.Factory.create (app.js?_dc=1599337408898:11479)
applyOverflow @ app.js?_dc=1599337408898:46636
setter @ app.js?_dc=1599337408898:5728
configure @ app.js?_dc=1599337408898:6036
initConfig @ app.js?_dc=1599337408898:6675
constructor @ app.js?_dc=1599337408898:10235
constructor @ app.js?_dc=1599337408898:37826
callParent @ app.js?_dc=1599337408898:6650
constructor @ app.js?_dc=1599337408898:46423
Ext.layout.Box @ app.js?_dc=1599337408898:6978
create @ app.js?_dc=1599337408898:11479
fn @ app.js?_dc=1599337408898:11577
applyLayout @ app.js?_dc=1599337408898:37072
setter @ app.js?_dc=1599337408898:5728
configure @ app.js?_dc=1599337408898:6036
initConfig @ app.js?_dc=1599337408898:6675
constructor @ app.js?_dc=1599337408898:10235
constructor @ app.js?_dc=1599337408898:20866
callParent @ app.js?_dc=1599337408898:6650
constructor @ app.js?_dc=1599337408898:24330
callParent @ app.js?_dc=1599337408898:6650
constructor @ app.js?_dc=1599337408898:36941
callParent @ app.js?_dc=1599337408898:6650
constructor @ app.js?_dc=1599337408898:46669
Ext.tab.Bar @ app.js?_dc=1599337408898:6978
eval @ VM95:3
create @ app.js?_dc=1599337408898:7870
factory @ app.js?_dc=1599337408898:5196
applyTabBar @ app.js?_dc=1599337408898:49637
setter @ app.js?_dc=1599337408898:5728
(anonymous) @ app.js?_dc=1599337408898:5719
updateTabBarPosition @ app.js?_dc=1599337408898:49660
setter @ app.js?_dc=1599337408898:5732
configure @ app.js?_dc=1599337408898:6047
initConfig @ app.js?_dc=1599337408898:6675
constructor @ app.js?_dc=1599337408898:10235
constructor @ app.js?_dc=1599337408898:20866
callParent @ app.js?_dc=1599337408898:6650
constructor @ app.js?_dc=1599337408898:24330
callParent @ app.js?_dc=1599337408898:6650
constructor @ app.js?_dc=1599337408898:36941
tabtest.view.MyTabPanel @ app.js?_dc=1599337408898:6978
eval @ VM95:3
create @ app.js?_dc=1599337408898:7870
launch @ app.js?_dc=1599337408898:50015
onBeforeLaunch @ app.js?_dc=1599337408898:36111
onProfilesReady @ app.js?_dc=1599337408898:36065
constructor @ app.js?_dc=1599337408898:36045
tabtest.$application @ app.js?_dc=1599337408898:6978
(anonymous) @ app.js?_dc=1599337408898:36227
invoke @ app.js?_dc=1599337408898:8964
doInvokeAll @ app.js?_dc=1599337408898:8989
invokeAll @ app.js?_dc=1599337408898:8971
handleReady @ app.js?_dc=1599337408898:8945
(anonymous) @ app.js?_dc=1599337408898:8953
elevate @ app.js?_dc=1599337408898:2426
timerFn @ app.js?_dc=1599337408898:4115
setTimeout (async)
defer @ app.js?_dc=1599337408898:4117
handleReadySoon @ app.js?_dc=1599337408898:8951
fireReady @ app.js?_dc=1599337408898:8936
doReadyEvent @ app.js?_dc=1599337408898:9027
onReadyEvent @ app.js?_dc=1599337408898:9015
bind @ app.js?_dc=1599337408898:8906
(anonymous) @ app.js?_dc=1599337408898:9114
(anonymous) @ app.js?_dc=1599337408898:9115
Комментарии:
1. Вы пробовали собирать
testing
раньше?2. Можете ли вы опубликовать весь журнал? Кстати … поддержка sencha ужасна!
3. Я отредактировал свой пост, чтобы показать весь журнал
Ответ №1:
Смотрите документацию для Ext.tab.Bar
:
Панель вкладок используется внутри Ext.tab.Panel и, как правило, ее не нужно создавать вручную.
… у него даже нет layout
конфигурации — и макета box
тоже нет; только hbox
amp; vbox
.
Комментарии:
1. Я изменил его на hbox, но это не исправляет
2. Нет
layout
конфигурации; так почему вы пытаетесь ее настроить?3. В документах я нашел это: docs.sencha.com/extjs/7.2.0/modern/Ext.tab.Bar.html#cfg-layout Мне это нужно, чтобы принудительно использовать левостороннее расположение вместо центрированного. Как я упоминал ранее, если я просто опубликую его, все будет работать нормально, поэтому должна быть разница между версией сборки и публикации
4. Он пытается связать это
overflow: 'scroller'
… но нетupdate()
метода.layout
Это просто определяетсяdocked
конфигурацией. Вашего примера недостаточно, чтобы воспроизвести что-либо.5. Как выглядел бы достаточный пример, может быть, я могу как-то привести пример?
Ответ №2:
Вам должен потребоваться новый макет.
classic
requires: [..., 'Ext.layout.container.Box']
modern
requires: [..., 'Ext.layout.Box']
Обычно, если что-то работает в dev, а не в production, вам не хватает requireds.
Из опубликованного вами кода я не могу точно сказать, как вам требуются ваши ViewModel и ViewController.
В качестве первой попытки добавьте следующее в свой Application.js внутри папки приложения И удалите требования из app.js:
requires: [
'Test.*',
'Ext.*'
],
Это добавит все к вашему приложению сборки.
!!! Хотя я не рекомендую отправлять его таким образом. !!!
Справочная информация: если вы добавляете панель, вы добавляете массу требований на лету. Но дополнительные макеты должны потребоваться хотя бы один раз в вашем приложении.
И пока вы меняете свой код, попробуйте использовать наилучшую практику
viewModel: {type: 'main'},
Ответ №3:
Попробуйте включить Ext.layout.overflow.Scroller
в свою конфигурацию requireds:
requires: [
'Ext.MessageBox',
'Ext.layout.Fit',
'Ext.layout.overflow.Scroller'
],
У меня это сработало.