Здесь я борюсь с очень простой проблемой.

Я хочу создать обычную ссылку во внешнем интерфейсе, но она как-то не работает. Вот код, который я использую для создания ссылки (ссылка была кнопкой, перед которой открывалось новое окно с указанным URL-адресом при нажатии).

{
  xtype: 'button',
  id: 'PrintTool',
  tooltip: 'Printer Friendly',
  iconCls: 'icon-printerFriendly',
  html: '<a href=\"http:\/\/www.google.at\">x<\/a>',
  listeners: {
    'click': function(button,event) {
      console.log(this);
      console.log(event);
      this.restoreClick();
      return true;
  }
}
}

Когда ExtJS отображает созданную кнопку, я добавляю к объекту атрибут html, ссылку на него.

Я вижу ссылку с FireBug. Когда я нажимаю на ссылку, я получаю вывод

    console.log(this);
    console.log(event);

В консоли

Итак, событие запущено. Но ссылка никогда не открывается.

Я думаю, это как-то связано с остановкой события CLICK из ExtJS.

Кажется, что, несмотря на то, что в Firebug нет кнопки в HTML, объект, переданный событию щелчка, по-прежнему является кнопкой.

Итак, у меня вопрос, как создать нормальный HTML в ExtJS без установки кнопки xtype. Или как создать нормальную ссылку.

Раньше я открывал всплывающее окно после нажатия кнопки. Всплывающее окно заблокировано в Chrome, IE и других браузерах, поэтому вместо этого я должен использовать обычную ссылку с URL-адресом.

4
Jeremy S. 16 Июл 2010 в 14:11

2 ответа

Лучший ответ

Получил ответ на свой вопрос на форуме ExtJS

Используйте LinkButton как расширение, написанное Animal

http://www.sencha.com/forum/showthread.php?80639-Ext.LinkButton-A-button-class-which-renders-an-lt-a-gt-element./page3

4
Jeremy S. 16 Июл 2010 в 10:51

Вы также можете использовать свойство html компонента метки и вызывать оттуда функцию контроллера. Пример:

{xtype: 'label',
html: 'bla bla? <a href="#" onClick="javascript:appName.app.getController(\'myController\').showRegistration();">Register</a>'
}
1
tonymayoral 16 Май 2014 в 23:18