视图呈现后更改导航列表项目

问题描述 投票:0回答:1

我有一个 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));
        },
firebase google-cloud-firestore sapui5 sap-fiori
1个回答
0
投票

我最终使用了每个项目的 Visible 属性。 通过操纵它,它就完成了工作。 任何其他更改 sideContent 的方法都不会得到反映。 就我而言,这意味着我需要以不同的方式处理菜单,而不是将项目绑定到模型并期望它反映在视图中

© www.soinside.com 2019 - 2024. All rights reserved.