我必须实现一个完全动态的SAPUI5应用程序。该应用程序通过来自服务的数据完全组装。有了这些数据,我必须动态地创建视图,控制器和路由。
我几乎设法动态创建视图和路由,但我遇到了严重的问题。当我从控制器创建视图时,我无法将其添加到路由中。不幸的是,“addRoute”方法需要“view”属性作为参数,其中路径必须放在定义视图的文件中。但在我的情况下,所述文件不存在,我正在控制器中直接创建视图。
我通过示例,以便您可以看到它:
var sMenu = "newView"; // <-- hardcode
if(!this.getRouter().getRoute(sMenu)) {
var xmlView = '<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" '
+ ' controllerName="com.iberdrolaEficiencia_v2.controller.Container"> '
+ ' <Page showHeader="false"> '
+ ' <Panel headerText="Hello World"> '
+ ' <Button text="lo que sea" press="doSomething"></Button>'
+ ' </Panel> '
+ ' </Page> '
+ ' </mvc:View> ';
// instantiate the View
var oView = sap.ui.xmlview({ id : sMenu, viewContent : xmlView });
// introduce la vista como parte de las rutas
var oRoutingViews = new sap.ui.core.routing.Views();
oRoutingViews.setView("base." + sMenu, oView);
// add new route
this.getRouter().addRoute(
{
pattern : sMenu,
name : sMenu,
view : "base." + sMenu, // fail because there is no file with that name
targetControl : "navMain",
targetAggregation : "pages"
}, this.getRouter().getRoute("Home"));
this.getRouter().initialize();
}
sap.ui.core.UIComponent.getRouterFor(this).navTo(sMenu, []);
简而言之,问题是,如何在路由中添加在控制器中创建的视图?
问候。