单击tabview选项卡时,Webix返回错误的'id'

时间:2018-10-24 20:04:41

标签: javascript tabview webix id

我有一个webix应用,基本上是一个tabview组件,带有许多动态生成的标签,其中可以包含几乎所有内容(表格/数据/聊天)。

我正在动态创建tabview的“ cells”和“ tabbs”,因为我不知道在任何给定时间(由于ACL,服务约束等)哪个标签可用。因此,我在运行时为tabview构建配置并动态添加视图。

在包含数据的标签(即数据表或图表视图)上,我需要在每次显示该标签时刷新数据。因此,当我单击“字段”选项卡时,我需要刷新“字段”(并且仅刷新“字段”数据),而当我单击“系统”时,则需要刷新“系统”数据。

我知道我可以使用tabbar.onChangemultiview.onViewChange来捕获制表符更改事件。问题是,当我尝试获取刚刚单击的选项卡的ID时,会得到一个垃圾ID(例如,view154098765421),而不是我分配给该组件的ID。返回的ID也不一致,因此无法以编程方式确定刚刚单击了哪个标签。

这是我的代码:

// 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中获得标签的实际idtabview

或者:是否有另一种方法可以在每次显示特定组件时刷新数据? (例如,当它的标签出现/被点击时)?

谢谢。

0 个答案:

没有答案