添加到路由动态创建的视图,没有文件

时间:2017-09-14 18:19:56

标签: sapui5

我必须实现一个完全动态的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, []);

简而言之,问题是,如何在路由中添加在控制器中创建的视图?

问候。

0 个答案:

没有答案