У меня есть домашняя страница с двумя плитками, которая работает как положено. При нажатии на плитку один мой элемент управления должен перейти к «SearchProductPage».
У меня есть следующие файлы:
homepage.view.js
homepage.controller.js
SearchProductPage.view.js
SearchProductPage.controller.js
Поэтому, когда я нажимаю на плитку, я получаю сообщения с предупреждениями по коду. Но мой код не перемещается к SearchProductPage.view.js
.
И при попытке доступа к роутеру он возвращает undefined
.
Просмотры
homepage.view.js
sap.ui.jsview("view.homepage", {
getControllerName: function() {
return "Webapp.controller.homepage";
},
createContent: function(oController) {
var oTileSearchProd = new sap.m.StandardTile({
title: "{i18n>tile_title_1}",
press: [oController.goToProductSearch, oController]
});
var oTileTopRatedProd = new sap.m.StandardTile({
title: "{i18n>tile_title_2}",
press: [oController.goToProductAnalytics, oController]
});
var oTileCont = new sap.m.TileContainer({
tiles: [oTileSearchProd, oTileTopRatedProd]
});
var oPage = new sap.m.Page({
title: "{i18n>app_head}",
enableScrolling: false,
content: [oTileCont]
});
return oPage;
}
});
Контроллеры
homepage.controller.js
sap.ui.controller("Webapp.controller.homepage", {
onInit: function() {
var i18nPath = "i18n/i18n.properties";
var oi18nModel = new sap.ui.model.resource.ResourceModel({
bundleUrl: i18nPath
});
sap.ui.getCore().setModel(oi18nModel, "i18n");
},
goToProductSearch: function(oEvt) {
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("idSearchProductPage");
},
goToProductAnalytics: function(oEvt) {
var app = sap.ui.getCore().byId("idProductsAnalyticsPage");
var oResourceBundle = app.getModel("i18n").getResourceBundle();
var url = oResourceBundle.getText("LOGIN").toString().trim();
sap.ui.getCore().setModel(new sap.ui.model.json.JSONModel(url), "barChart");
var that = this;
that.getOwnerComponent().getRouter().navTo("idProductsAnalyticsPage");
}
});
Дескриптор приложения (manifest.json
)
{
"_version": "1.12.0",
"sap.app": {
"id": "Webapp",
"type": "application",
"applicationVersion": {
"version": "1.0.0"
},
"title": "{{appTitle}}",
"description": "{{appDescription}}",
"sourceTemplate": {
"id": "servicecatalog.connectivityComponentForManifest",
"version": "0.0.0"
}
},
"sap.ui": {
"technology": "UI5"
},
"sap.ui5": {
"rootView": {
"viewName": "Webapp.view.homepage",
"type": "JS",
"async": true,
"id": "App"
},
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"viewType": "JS",
"viewPath": "sap.ui.Webapp.view",
"controlId": "app",
"controlAggregation": "pages",
"transition": "slide"
},
"routes": [
{
"pattern": "",
"name": "homepage",
"target": "homepage"
},
{
"pattern": "SearchProductPage",
"name": "SearchProductPage",
"target": "SearchProductPage"
},
{
"pattern": "ProductDetailPage",
"name": "ProductDetailPage",
"target": "ProductDetailPage"
},
{
"pattern": "ProductAnalyticsPage",
"name": "ProductAnalyticsPage",
"target": "ProductAnalyticsPage"
},
{
"pattern": "SearchProductPage",
"name": "SearchProductPage",
"target": "SearchProductPage"
}
],
"targets": {
"homepage": {
"viewName": "homepage"
},
"SearchProductPage": {
"viewName": "SearchProductPage"
},
"ProductDetailPage": {
"viewName": "ProductDetailPage"
},
"ProductAnalyticsPage": {
"viewName": "ProductAnalyticsPage"
}
}
}
}
}
My index.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>Divya Demo Project</title>
<script
src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js "
id="sap-ui-bootstrap"
data-sap-ui-libs="sap.m"
data-sap-ui-theme="sap_bluecrystal"
data-sap-ui-resourceroots='{"Webapp":"./"}'
></script>
<script>
sap.ui.localResources("view");
var app = new sap.m.App({
initialPage: "homePage",
});
app.addPage(sap.ui.view({
id: "homePage",
viewName: "view.homepage",
type: sap.ui.core.mvc.ViewType.JS,
}));
app.addPage(sap.ui.view({
id: "SearchProductPage",
viewName: "view.SearchProductPage",
type: sap.ui.core.mvc.ViewType.JS,
}));
app.placeAt("content");
</script>
</head>
<body class="sapUiBody" role="application">
<div id="content"></div>
</body>
</html>
Это мой проект. все в JavaScript: