我有一个 ToolPage 应用程序。 SideContent 的内容需要从 Firestore 集合读取的响应中填充,这是异步的(承诺)。
到目前为止,每一次解决这个问题的尝试都失败了。 尝试在 Component.js 中获取数据,但在渲染视图后仍然有响应。 甚至尝试手动插入项目,但在这种情况下,尽管项目已添加到控件中,但视图根本没有改变
有什么可能的方法来等待 Firestore 响应吗? 或者至少从 OpenUI5 角度重新渲染视图?
如果您想知道,下面是视图上的 sidecontent 定义:
<tnt:sideContent>
<tnt:SideNavigation id="_IDGenSideNavigation1"
visible="{= ${!device>/system/phone}}"
expanded="true"
selectedKey="Lobby"
itemSelect=".onItemSelect">
<tnt:NavigationList id="_IDGenNavigationList1" items="{path: '/Navigations>/navigations'}">
<tnt:NavigationListItem id="_IDGenNavigationListItem1"
text="{title}"
icon="{icon}"
key="{key}">
</tnt:NavigationListItem>
</tnt:NavigationList>
</tnt:SideNavigation>
</tnt:sideContent>
这是 Firestore 获取:
getNavigations: function () {
this.collRefNavs.get().then(
function (collection) {
var navModel = this.getView().getModel("Navigations");
var navData = navModel.getData();
var navs = collection.docs.map(function (docNav) {
return docNav.data();
});
navData.navigations = navs;
var navList = this.getView().byId("_IDGenNavigationList1");
navData.navigations.forEach(
function (element) {
var index = 0;
navList.insertItem(index, element)
}
)
}.bind(this));
},
我最终使用了每个项目的 Visible 属性。 通过操纵它,它就完成了工作。 任何其他更改 sideContent 的方法都不会得到反映。 就我而言,这意味着我需要以不同的方式处理菜单,而不是将项目绑定到模型并期望它反映在视图中