亲爱的SAPUI5开发人员,
我有一个sap.m.IconTabBar
,当用户在页面之间切换时,我会通过代码设置活动标签。我使用了以下代码:
sap.ui.getCore().byId(this.createId("iconTabBar")).setSelectedKey("1");
问题是它将所选标签正确切换到第一个标签。但它没有显示标签下的蓝线,表明它已被选中。
请查看以下图片:
当我按代码选择第一个标签时显示的内容:
但是,当我用鼠标按下标签时,它会显示图标下面的蓝线,如下所示:
答案 0 :(得分:1)
正如@Ash在评论中所说,你需要调用hash
,但这只是在第一个用户使用第二个标签时才有用。如果用户位于第一个选项卡上并在页面之间切换,则fireSelect
无法正常运行。因此,您需要先选择第二个选项卡,然后几乎所有时间都可以使用。
fireSelect
答案 1 :(得分:1)
好的,我看了一下IconTabBar的源代码,还有一些我不知道的原因,但是这里是如何进行的:
当你调用IconTabBar.setSelectedKey(key)时,它调用IconTabHeader.setSelectedKey(key)
然后在内部IconTabBarHeader调用setSelectedItem(item,true)
这里的'true'很重要,参数在setSelectedItem函数中被命名为'bAPIchange',它被用作fireSelect()的条件:
if (!bAPIchange) {
// fire event on iconTabBar
if (bIsParentIconTabBar) {
oParent.fireSelect({
selectedItem: this.oSelectedItem,
selectedKey: sSelectedKey,
item: this.oSelectedItem,
key: sSelectedKey
});
} else {
// fire event on header
this.fireSelect({
selectedItem: this.oSelectedItem,
selectedKey: sSelectedKey,
item: this.oSelectedItem,
key: sSelectedKey
});
}
}
这解释了为什么在您的情况下不会触发事件