Duplicate id Битрикс24 в табах
создаётся кастомный таб в карточке компании. В табе размещается грид с фильтром.
При использовании любого фильтра или пресета появляется ошибка типа:
"Duplicate id (company_12_timeline_history_search_container) for the BX.Main.Popup instance."
После перезагрузки страницы (F5) и повторного захода в таб карточки видим отфильтрованные данные с учетом выбранных ранее фильтров.
Так же при переключении на другие вкладки карточки компании (даже если отменить подключение вышеуказанной кастомной вкладки) в консоли появляются сообщения вида:
Possible BX.Event.EventEmitter memory leak detected. 30 "grid::updated" listeners added. Use emitter.setMaxListeners() to increase limit.
Если данный компонент вставить в пустую страницу - все будет работать как надо и без ошибок.
Может кто-то уже сталкивался с подобной проблемой! Подскажите пожалуйста как ее можно решить?
Ответы (1 шт):
Аналогичная проблема решилась следующими действиями. Во-первых нужно заменить url для вызова данных в новый таб после обновления параметров настроек/фильтра. Для этого нужно поставить обработчик события в js файле:
BX.addCustomEvent('Grid::beforeRequest', (grid, eventArgs) => {
let url = eventArgs.url;
if(eventArgs.gridId == "our_greed_id") {
// проверяем наш ли gridID, чтобы не изменить логику работы
// для других гридов<br>
url = 'путь/до/скрипта/с/данными/таба/ ';
}
eventArgs.url = url;
})
Во-вторых у компонента bitrix:main.ui.grid у параметра AJAX_MODE устанавливаем значение "N".