Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Проблема при получение родительского контейнера компонента. (https://javascript.ru/forum/extjs/75909-problema-pri-poluchenie-roditelskogo-kontejjnera-komponenta.html)

Ambassador 15.11.2018 23:44

Проблема при получение родительского контейнера компонента.
 
Всем привет.

При нажатии на запись дерева пытаюсь установить значения этой записи и установить эти значения в форме.

В контроллере по событию itemclick: this.showDataFields срабатывает функция:

....

showDataFields: function(view, record, item, index, event) {
        //got a form with fields
        var panel = view.up('maintab');
       console.log(panel)

        //var formfield   = panel.down('actionform');
        //assign values from selected record to form fields
        //formfield.loadRecord(record);

    },

..........


В этой функции view.up('maintab') устанавливается как underfined .

"maintab" является Ext.tab.Panel в котором находится дерево.

Почему не удается получить самый верхний контейнер что бы после этого спустится до панели и как это правильно сделать?
Пример в fiddle

Спасибо

siber-biber 16.11.2018 10:50

поменяйте на tabpanel вот в этом месте:
showDataFields: function(view, record, item, index, event) {
        //got a form with fields
        var panel = view.up('tabpanel');
...

xtype и alias бесполезны в app.js вот в этом куске кода:
Ext.create('Ext.tab.Panel', {
            xtype: 'maintab',
            alias: 'widget.maintab',

alias не используется так как он должен задаваться при создании класса, то есть при вызове Ext.define().

alias и xtype это по сути краткие имена классов, дабы при описании интерфейса в виде JSON вместо например "MyApp.view.MyCoolButton" можно было писать просто "coolbutton".

xtype у вас не используется потому что вы и так указали имя класса экземпляр которого создаётся: "'Ext.tab.Panel'

если вам нужен был способ идентифицировать/находить этот компонент использовали бы itemId или reference

Ambassador 16.11.2018 15:37

Цитата:

Сообщение от siber-biber (Сообщение 498699)
поменяйте на tabpanel вот в этом месте:
showDataFields: function(view, record, item, index, event) {
        //got a form with fields
        var panel = view.up('tabpanel');
...

xtype и alias бесполезны в app.js вот в этом куске кода:
Ext.create('Ext.tab.Panel', {
            xtype: 'maintab',
            alias: 'widget.maintab',

alias не используется так как он должен задаваться при создании класса, то есть при вызове Ext.define().

alias и xtype это по сути краткие имена классов, дабы при описании интерфейса в виде JSON вместо например "MyApp.view.MyCoolButton" можно было писать просто "coolbutton".

xtype у вас не используется потому что вы и так указали имя класса экземпляр которого создаётся: "'Ext.tab.Panel'

если вам нужен был способ идентифицировать/находить этот компонент использовали бы itemId или reference

Теперь понятно почему была проблема.
Спасибо.


Часовой пояс GMT +3, время: 16:35.