我有一个webix应用,基本上是一个tabview
组件,带有许多动态生成的标签,其中可以包含几乎所有内容(表格/数据/聊天)。
我正在动态创建tabview的“ cells”和“ tabbs”,因为我不知道在任何给定时间(由于ACL,服务约束等)哪个标签可用。因此,我在运行时为tabview构建配置并动态添加视图。
在包含数据的标签(即数据表或图表视图)上,我需要在每次显示该标签时刷新数据。因此,当我单击“字段”选项卡时,我需要刷新“字段”(并且仅刷新“字段”数据),而当我单击“系统”时,则需要刷新“系统”数据。>
我知道我可以使用tabbar.onChange
或multiview.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
中获得标签的实际id
或tabview
?
或者:是否有另一种方法可以在每次显示特定组件时刷新数据? (例如,当它的标签出现/被点击时)?
谢谢。