微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sapui5 – 如何在XML视图中动态加载XML片段?

假设我有以下 XML视图:

<mvc:View xmlns:mvc="sap.ui.core.mvc" ...>
    <Page>
        <content>
            <l:VerticalLayout>
                <l:content>
                    <core:Fragment fragmentName="my.static.Fragment" type="XML" />
                </l:content>
            </l:VerticalLayout>
        </content>
    </Page>
</mvc:View>

片段my.Fragment是静态加载的.但是,我现在想要动态更改要加载的片段(理想情况下使用绑定fragmentName属性的数据,但任何其他方法也应该没问题),即.这样的事情:

<mvc:View xmlns:core="sap.ui.core.mvc" ...>
    <Page>
        <content>
            <l:VerticalLayout>
                <l:content>
                    <core:Fragment fragmentName="{/myDynamicFragment}" type="XML" />
                </l:content>
            </l:VerticalLayout>
        </content>
    </Page>
</mvc:View>

但是,后者不起作用,Fragment定义不允许数据绑定……我可能错过了一些东西,但是如何基于参数/模型属性/ etc动态更改XML视图中的Fragment?

现在,我已经使用自定义控件而不是直接在我的视图中使用片段,并让该控件执行调度到相应的片段,但我觉得应该有一个更容易,开箱即用的方式. ..

解决方法

我认为唯一的解决方案是从控制器的onInit方法初始化片段:

sap.ui.controller("my.controller",{
    onInit : function(){
        var oLayout = this.getView().byId('mainLayout'),//don't forget to set id for a VerticalLayout
            oFragment = sap.ui.xmlfragment(this.fragmentName.bind(this));
        oLayout.addContent(oFragment);
    },fragmentName : function(){
       return "my.fragment";
    }
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。