2016-08-29 3 views
2

У меня есть поле для тегов, чтобы многократно выбирать элементы из магазина. Я хочу определить, когда из всех выбранных элементов я нажимаю и выделяю одно из выбранного значения.Extjs 5/6: событие для запуска, когда элемент выбран среди уже выбранных элементов в поле тегов

Вот скрипка прилагается

https://fiddle.sencha.com/#fiddle/17or

ответ

2

Незнайка, но должно быть легко найти:

  • Если посмотреть в генерируемый разметки, считают, что выбранный элемент имеет класс x-tagfield-item-selected ,
  • Если вы ищете код ExtJS для tagfield-item-selected, найдите tagSelectedCls is Ext.baseCSSPrefix + 'tagfield-item-selected'.
  • Если вы будете искать в кодовую ExtJS для tagSelectedCls, считают, что он используется в XTemplate:

    me.multiSelectItemTpl = new Ext.XTemplate([ 
         '<tpl for=".">', 
          '<li data-selectionIndex="{[xindex - 1]}" data-recordId="{internalId}" class="' + me.tagItemCls + childElCls, 
          '<tpl if="this.isSelected(values)">', 
          ' ' + me.tagSelectedCls, 
          '</tpl>', 
    

    , который имеет функцию IsSelected:

    isSelected: function(rec) { 
        return me.selectionModel.isSelected(rec); 
    }, 
    
  • Ваши шансы высоки ссылочный selectionModel на me.selectionModel является стандартной моделью выбора ExtJS, поэтому она может иметь событие selectionchange. Давайте попробуем:

    var tagfield = Ext.create('Ext.form.field.Tag', { 
    ... 
    }); 
    tagfield.selectionModel.on('selectionchange',function() {console.log('selectionchange')}); 
    

    Работы.

+0

Спасибо .. Это потрясающе !! :) – AngryLeo

+0

У меня есть следующий вопрос, предположим, что я хочу показать подсказку для каждого выбранного элемента, как бы я это сделал? – AngryLeo

Смежные вопросы