Model view controller 像ASP.NET MVC这样的OpenUI5路由?

Model view controller 像ASP.NET MVC这样的OpenUI5路由?,model-view-controller,sapui5,Model View Controller,Sapui5,我正在尝试构建一个OpenUI5应用程序,该应用程序首先通过路由器运行所有导航配置我可以看到我的路由正在启动,但它们从不尝试加载控制器/视图。当OpenUI5试图找到我丢失的视图时,我希望看到404个错误 我正在尝试镜像ASP.NET,它遵循我称之为“路由优先”的方法。在ASP.NET中实例化控制器之前,路由引擎首先需要将路由与给定URL匹配;然后实例化匹配的控制器 我只有两个文件,一个Component.js文件和一个index.html文件。稍后我将添加控制器和视图,但在我当前的设置中,我甚

我正在尝试构建一个OpenUI5应用程序,该应用程序首先通过路由器运行所有导航配置我可以看到我的路由正在启动,但它们从不尝试加载控制器/视图。当OpenUI5试图找到我丢失的视图时,我希望看到404个错误

我正在尝试镜像ASP.NET,它遵循我称之为“路由优先”的方法。在ASP.NET中实例化控制器之前,路由引擎首先需要将路由与给定URL匹配;然后实例化匹配的控制器

我只有两个文件,一个Component.js文件和一个index.html文件。稍后我将添加控制器和视图,但在我当前的设置中,我甚至没有看到OpenUI5发出任何HTTP请求来获取丢失的控制器/视图

Component.js index.html

jQuery.sap.registerModulePath(“cag.sbx”,“/components/sbx”);
新的sap.ui.core.ComponentContainer({
名称:“cag.sbx”
}).placeAt(“内容”);
我已经用完整的项目和一个JSFIDLE创建了一个GitHub repo。在JSFIDLE中,您会注意到,如果使用浏览器开发工具,则不会对Products.View.js或Login.View.js文件发出HTTP请求


您实际上缺少两件事:

  • 基本容器需要包含
    sap.m.App
    SplitApp
    ,以便可以聚合页面
  • targetAggregation
    是将这些创建的页面放置在
    targetControl
    的聚合中的位置。对于
    App
    its
    pages
    ,对于splitapp,它可以是
    masterPages
    detailPages
  • 我有更新的代码在

    Query.sap.declare("cag.sbx.Component");
    sap.ui.core.UIComponent.extend("cag.sbx.Component",
    {
        metadata:
        {
            name: "OpenUI5 Simple Routing",
            includes: [],
            dependencies: {
                libs: ["sap.m", "sap.ui.layout"],
                components: []
            },
            routing:
            {
                config:
                {
                    viewType: "JS",
                    viewPath: "cag.sbx.views",
                    targetControl: "emptyElement",
                    clearTarget: false
                },
                routes:
                [
                    {
                        pattern: "products/{id}",
                        name: "product",
                        view: "Products"
                    },
                    {
                        pattern: "",
                        name: "default",
                        view: "Home"
                    }
                ]
            }
        },
        init: function()
        {
            sap.ui.core.UIComponent.prototype.init.apply(this, arguments);
            // this component should automatically initialize the router!
            this.getRouter().initialize();
        },
        createContent: function()
        {
            var panel = new sap.ui.commons.ResponsiveContainer("emptyElement");
            return panel;
        }
    });
    
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script id="sap-ui-bootstrap"
                src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"
                data-sap-ui-theme="sap_bluecrystal"
                data-sap-ui-libs="sap.ui.commons,sap.m"></script>
        <script>
            jQuery.sap.registerModulePath("cag.sbx", "./components/sbx");
            new sap.ui.core.ComponentContainer({
                    name: 'cag.sbx'
                }).placeAt("content");
        </script>
    </head>
    <body>
        <div id="content"></div>
    </body>
    </html>