Webix возвращает неверный идентификатор при нажатии на вкладку - PullRequest
0 голосов
/ 24 октября 2018

У меня есть приложение 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?

Или: Есть ли другой способ получить обновлениеданные для конкретного компонента каждый раз, когда он отображается?(например, когда на вкладке появляется / нажимается)?

Спасибо.

...