extjs, как параметризовать компонент - PullRequest
1 голос
/ 28 мая 2019

Я пытаюсь передать два параметра oneOfAll и twoOfAll в контейнер. Из функции initComponent я делаю:

initComponent: function () {
       this.callParent(arguments);
       console.log('Results', this.oneOfAll, this.twoOfAll);
}

и консоль браузера выводит правильные данные, но когда:

items: [
          {
              xtype: 'button',
              text: 'Other click',
              id: 'buttonClick',
              handler: function(item) {
                  Ext.Msg.alert('Other Click', '!!!' + this.oneOfAll);
              }
          },
          {
              xtype: 'button',
              text: 'CLICK',
              id: 'buttonClick_2',
              handler: function(item) {
                 Ext.Msg.alert('Other Click', '!!!' + this.twoOfAll);
              }
           }
      ]

эти значения не видны в конфигурации контейнера, оба раза возвращается undefined.

У меня есть эта скрипка: https://fiddle.sencha.com/#view/editor&fiddle/2sk3

Как я могу передать эти параметры в контейнер и увидеть его?

Ответы [ 3 ]

1 голос
/ 28 мая 2019

Вы можете установить ссылку на текущий компонент в методе initComponent и использовать их в дочернем компоненте.

Взгляните на пример: https://fiddle.sencha.com/#view/editor&fiddle/2skh

1 голос
/ 28 мая 2019

Внутри обработчика this ссылается на объект элемента, а не на ваш компонент.

Чтобы исправить это, вы можете попытаться получить доступ к компоненту по идентификатору и получить его свойство напрямую.

Например (используя ваш mypanel идентификатор из скрипки):

{
    xtype: 'button',
    text: 'Other click',
    id: 'buttonClick',
    handler: function (item) {
        var cmp = Ext.getCmp('mypanel');
        Ext.Msg.alert('Other Click', '~~!!' + cmp.oneOfAll);
    }
},
0 голосов
/ 28 мая 2019

Ваш обработчик имеет различную область видимости и конфиги, которые вы устанавливаете в разных.

Чтобы получить значения, сначала получите ссылку на этот компонент, а затем попытайтесь получить доступ.

handler: function(item) {       
   Ext.Msg.alert('Other Click', '!!!' + item.up().oneOfAll);
   Ext.Msg.alert('Other Click', '!!!' + item.up().twoOfAll);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...