sapui5 – 如何在XML视图中动态加载XML片段?
发布时间:2020-12-16 23:31:41 所属栏目:百科 来源:网络整理
导读:假设我有以下 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是静态
假设我有以下
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"; } }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |