UI5-文档-4.31-Routing and Navigation
到目前为止,我们已经把所有的应用程序内容放在一个页面上。随着我们添加越来越多的特性,我们希望将内容拆分并将其放在不同的页面上。
在这一步中,我们将使用SAPUI5导航特性加载并显示一个单独的详细信息页面,稍后我们可以使用该页面显示发票的详细信息。在前面的步骤中,我们直接在app视图中定义了页面,以便在加载app时显示页面。现在我们将使用SAPUI5 router类来加载页面并自动更新URL。我们为应用程序指定路由配置,并为应用程序的每个页面创建单独的视图,然后通过触发导航事件连接视图。
Preview

A second page is added to display the invoice
Coding
You can view and download all files at Walkthrough - Step 31.
webapp/manifest.json
{
"_version": "1.12.0",
…
"sap.ui5": {
…
"models": {
…
},
"routing":{
"config":{
"routerClass":"sap.m.routing.Router",
"viewType":"XML",
"viewPath":"sap.ui.demo.walkthrough.view",
"controlId":"app",
"controlAggregation":"pages",
"async":true
},
"routes":[
{
"pattern":"",
"name":"overview",
"target":"overview"
},
{
"pattern":"detail",
"name":"detail",
"target":"detail"
}
],
"targets":{
"overview":{
"viewID":"overview",
"viewName":"Overview"
},
"detail":{
"viewId":"detail",
"viewName":"Detail"
}
}
}
}
}
config我们向描述符的sap.ui5部分添加了一个新的“routing”部分。定义app的路由和导航结构有三个小节:
本节包含适用于所有路由和目标的全局路由器配置和默认值。我们定义我们想要使用的router类,以及视图位于app中的位置。为了自动加载和显示视图,我们还指定了用于显示页面的控件以及在显示新页面时应该填充哪些聚合。
routes
每个路由定义一个名称、一个模式和一个或多个目标,以便在路由被命中时导航到这些目标。模式基本上是与路由匹配的URL部分,我们为app定义了两条路由。第一个是默认路由,它将显示概述页面和前面步骤中的内容,第二个是详细路由,它具有URL模式详细信息,将显示一个新页面。
targets
目标定义了一个显示的视图,它与一个或多个路由相关联,也可以从应用程序内部手动显示。每当显示一个目标时,相应的视图就被加载并显示在应用程序中。在我们的应用程序中,我们简单地定义了两个具有与目标名称相对应的视图名称的目标。
webapp/Component.js
sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/model/json/JSONModel",
"sap/ui/demo/walkthrough/controller/HelloDialog"
], function (UIComponent, JSONModel, HelloDialog) {
"use strict"; return UIComponent.extend("sap.ui.demo.walkthrough.Component", { metadata: {
manifest: "json"
}, init: function () {
… // set dialog
this._helloDialog = new HelloDialog(this.getRootControl());
// create the views based on the url/hash
this.getRouter().initialize();
},
}); exit : function() {
this._helloDialog.destroy();
delete this._helloDialog;
}, openHelloDialog : function () {
this._helloDialog.open();
}
});
});
在组件初始化方法中,我们现在添加一个调用来初始化路由器。我们不需要手动实例化路由器,它是基于我们的AppDescriptor配置自动实例化并分配给组件的。
初始化路由器将计算当前URL并自动加载相应的视图。这是在AppDescriptor中配置的路由和目标的帮助下完成的。如果某个路由被命中,则加载并显示其对应目标的视图。
webapp/view/Overview.view.xml (New)
<mvc:View
controllerName="sap.ui.demo.walkthrough.controller.App"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Pagetitle="{i18n>homePageTitle}">
<headerContent>
<Button
icon="sap-icon://hello-world"
press="onOpenDialog"/>
</headerContent>
<content>
<mvc:XMLViewviewName="sap.ui.demo.walkthrough.view.HelloPanel"/>
<mvc:XMLViewviewName="sap.ui.demo.walkthrough.view.InvoiceList"/>
</content>
</Page>
</mvc:View>
我们将前面步骤的内容从App视图移动到一个新的Overview视图。为简单起见,我们不更改控制器,因为它只包含打开对话框的helper方法,这意味着我们将controller sa .ui.demo.walk .controller. app用于两个不同的视图(用于新的概览和app视图)。但是,该控制器的两个实例在运行时实例化。通常,为引用控制器的每个视图实例化控制器的一个实例。
webapp/view/App.view.xml
<mvc:View
controllerName="sap.ui.demo.walkthrough.controller.App"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc"
displayBlock="true">
<Appclass="myAppDemoWT"id="app"/>
</mvc:View>
我们的App视图现在只包含空的App标签。路由器会自动将与当前URL相对应的视图添加到app控件中。路由器用与AppDescriptor中的属性controlId相对应的ID标识应用程序控件:“app”。
webapp/view/Detail.view.xml (New)
<mvc:View
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Page
title="{i18n>detailPageTitle}">
<ObjectHeader
title="Invoice"/>
</Page>
</mvc:View>
webapp/i18n/i18n.properties现在我们为detail视图添加第二个视图。它只包含一个页面和一个ObjectHeader控件,该控件目前显示静态文本发票。
…
# Invoice List
invoiceListTitle=Invoices
invoiceStatusA=New
invoiceStatusB=In Progress
invoiceStatusC=Done # Detail Page
detailPageTitle=Walkthrough - Details
我们为详细页标题向资源包添加一个新字符串。
webapp/view/InvoiceList.view.xml
<mvc:View
controllerName="sap.ui.demo.walkthrough.controller.InvoiceList"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<List …>
…
<items>
<ObjectListItem title="{invoice>Quantity} x {invoice>ProductName}"
number="{
parts: [{path: 'invoice>ExtendedPrice'}, {path: 'view>/currency'}],
type: 'sap.ui.model.type.Currency',
formatOptions: {
showMeasure: false
}
}"
numberUnit="{view>/currency}"
numberState="{= ${invoice>ExtendedPrice} > 50 ? 'Error' : 'Success' }"
type="Navigation"
press="onPress">
<firstStatus>
<ObjectStatus text="{
path: 'invoice>Status',
formatter: '.formatter.statusText'
}"/>
</firstStatus>
</ObjectListItem>
</items>
</List>
</mvc:View>
在invoice list视图中,我们向列表项添加了一个press事件,并将项目类型设置为导航,以便可以实际单击该项目。
webapp/controller/InvoiceList.controller.js
sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/ui/model/json/JSONModel",
"sap/ui/demo/walkthrough/model/formatter",
"sap/ui/model/Filter",
"sap/ui/model/FilterOperator"
], function (Controller, JSONModel, formatter, Filter, FilterOperator) {
"use strict"; return Controller.extend("sap.ui.demo.walkthrough.controller.InvoiceList", { … onPress:function(oEvent){
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("detail");
}
});
});
我们将事件处理程序函数添加到发票列表的控制器中。现在可以通过单击发票列表中的项目导航到详细信息页面。我们通过调用helper方法sap.ui.core.UIComponent.getRouterFor(this)来访问应用程序的router实例。在路由器上,我们调用navTo方法来导航到路由配置中指定的详细路由。
当您单击发票列表中的项目时,现在应该会看到详细信息页面。
Conventions
在描述符中定义路由配置
Parent topic: Walkthrough
Previous: Step 30:
Debugging Tools
Next: Step 32:
Routing with Parameters
Related Information
Tutorial:
Navigation and Routing
API Reference: sap.m.routing.Router
UI5-文档-4.31-Routing and Navigation的更多相关文章
- elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))
一.分词器 1. 认识分词器 1.1 Analyzer 分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如 ...
- elasticsearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解
一.快速入门1. 查看集群的健康状况http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 状 ...
- Sharepoint学习笔记—ECM系列—文档列表的Metedata Navigation与Key Filter功能的实现
如果一个文档列表中存放了成百上千的文档,想要快速的找到你想要的还真不是件容易的事,Sharepoint提供了Metedata Navigation与Key Filter功能可以帮助我们快速的过滤和定位 ...
- 31 Godoc: documenting Go code 编写良好的文档关于godoc
Godoc: documenting Go code 编写良好的文档关于godoc 31 March 2011 The Go project takes documentation seriousl ...
- Elasticsearch增删改查 之 —— mget多文档查询
之前说过了针对单一文档的增删改查,基本也算是达到了一个基本数据库的功能.本篇主要描述的是多文档的查询,通过这个查询语法,可以根据多个文档的查询条件,返回多个文档集合. 更多内容可以参考我整理的ELK文 ...
- RabbitMq 技术文档
RabbitMq 技术文档 目录 1 AMQP简介 2 AMQP的实现 3 RabbitMQ简介 3.1 概念说明 3.2 消息队列的使用过程 3.3 RabbitMQ的特性 4 RabbitMQ使用 ...
- HighCharts 详细使用及API文档说明
一.HighCharts开发说明: HighCharts开发实际上配置HighCharts每个部分,比如配置标题(title),副标题(subtitle)等,其中每个部分又有更细的参数配置,比如标题下 ...
- HighCharts 具体使用及API文档说明
一.HighCharts开发说明: HighCharts开发实际上配置HighCharts每一个部分,比方配置标题(title),副标题(subtitle)等,当中每一个部分又有更细的參数配置,比方标 ...
- Ext JS 6学习文档–第1章–ExtJS入门指南
Ext JS 入门指南 前言 本来我是打算自己写一个系列的 ExtJS 6 学习笔记的,因为 ExtJS 6 目前的中文学习资料还很少.google 搜索资料时找到了一本国外牛人写的关于 ExtJS ...
- 使用 Flask-Docs 自动生成 Api 文档
影响我写文档的原因可能是代码和文档分离,有时候写完代码会忘记补文档,而且不能及时查看,使用 Flask-Docs 可以解决我的问题,这个插件可以根据代码注释生成文档页面,代码注释改动文档可以及时更新, ...
随机推荐
- Mac 下 java环境 maven环境配置
java环境配置 下载jdk,按照提示安装 我下的是1.8.0版本,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8- ...
- CommonsChunkPlugin知识点
CommonsChunkPlugin 的作用就是提取代码中的公共模块,然后将公共模块打包到一个独立的文件中去,以便在其它的入口和模块中使用. 多个 html共用一个js文件(chunk),可用Comm ...
- netty答题
1,介绍一下netty netty封装了Java原生的nio,是一个异步和数据驱动的网络编程框架, 与tcp: netty -> Java Runtime Socket (io.nio.nio2 ...
- POJ2411骨牌覆盖——状压dp
题目:http://poj.org/problem?id=2411 状压dp.注意一下代码中标记的地方. #include<iostream> #include<cstdio> ...
- 大快搜索DKhadoop集群管理平台添加节点的步骤说明
Hadoop作为搭建大数据处理平台的重要“基石”,关于它的分析和讲解的文章已经有很多了.Hadoop本身是一分布式的系统,因此在安装的时候,需要多每一个节点进行组建的安装.并且由于是开源软件,其安装过 ...
- 性能计数器监控typeperf
获取性能计数器名称列表: typeperf -qx 监控: typeperf.exe "\JetByte TCP Stats Perf Counters Service\IPv4: ESTA ...
- 一小时入门webpack
webpack现在已经成为了大众化的项目必要脚手架,基本上现在的很多项目都需要webpack,由于webpack的出现glup和grunt已经完败,今天我们来说一下webpack如何使用. 首先我们需 ...
- 发布程序时出现“类型ASP.global_asax同时存在于...”错误的解决办法
web程序发布后,通过浏览器访问程序显示如下的错误信息: 编译器错误消息: CS0433: 类型“ASP.global_asax”同时存在于“c:\WINDOWS\Microsoft.NET\Fram ...
- web前端开发企业级CSS常用命名,书写规范总结
1.常用命名 标题: title 摘要: summary 箭头: arrow 商标: label 网站标志: logo 转角/圆角: corner 横幅广告: banner 子菜单: subMenu ...
- php表达式
表达式是PHP中一个重要的概念,可以把表达式理解为“任何有值的东西”.在本教程中涉及到表达式的语法,我们以“expr”来表示表达式. 下面就是一个表达式: $x > $y; 在上面的例子中,当$ ...