У меня есть приложение webix , которое в основном представляет собой компонент tabview
с несколькими динамически генерируемыми вкладками, которые могут содержать практически все (формы / данные / чаты).
Я динамически создаю «ячейки» и «вкладки» в виде вкладок, так как не знаю, какие вкладки будут доступны в любой момент времени (из-за ACL, ограничений служб и т. Д.).Поэтому я создаю конфигурацию для представления вкладок во время выполнения и динамически добавляю представления.
На вкладках, которые содержат данные (т. Е. Таблицы данных или представления диаграмм), мне нужно обновлять данные каждый раз, когда отображается эта вкладка.Поэтому, когда я нажимаю на вкладку «поля», мне нужно обновить «поля» (и только данные «полей»), а когда я нажимаю «система», мне нужно обновить данные «системы».
Я знаю, что могу зафиксировать событие смены табуляции, используя tabbar.onChange
или multiview.onViewChange
.Проблема в том, что когда я пытаюсь получить идентификатор только что нажатой вкладки, вместо идентификатора, который я назначил этому компоненту, я получаю идентификатор мусора (например, view154098765421).Возвращенный идентификатор также является непоследовательным, поэтому я не могу использовать его для программного определения, какая вкладка была только что нажата.
Вот мой код:
// setting up main 'content' tabview.
// Cells will be various 'pages' of controls / forms.
var content = {
cols: [
{
view: "tabview",
cells: [
{ name: "system", header: "System", id:"system", body: {template:"System"} }
],
// trying to get tab id or name whenever tab is changed.
tabbar: {
on: {
onChange: function(id) {
webix.message(id);
}
}
},
multiview: {
on: {
onViewChange: function(a, b) {
webix.message(a,b);
}
}
}
}
]
};
// creating other view to be dynamically added later.
var fields = {
cols: [{ /* more content here */ }]
};
// dynamically adding view 'fields' to 'content'
content.cols[0].cells.push(
{ name: "fields", header: "Fields", id:"fields", body: fields }
);
// diaplyaing 'content' view.
webix.ready(function() {
webix.ui(
content
)
});
Здесь вы можете увидеть скрипку: https://snippet.webix.com/4d3zm8la
Итак, мой вопрос: как я могу получить фактические name
или id
вкладки в tabview
?
Или: Есть ли другой способ получить обновлениеданные для конкретного компонента каждый раз, когда он отображается?(например, когда на вкладке появляется / нажимается)?
Спасибо.