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