SAPUI5路由

2020-08-17 16:47发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我是SAPUI5应用程序的新手,我从 sapui5.hana开始了导航和路由教程。 .ondemand.com ,我想使用由我创建的OData服务,但步骤7的导航不起作用(导航教程)。 此时会显示员工列表,但是当我想导航到包含有关员工详细信息的页面时,该页面将无法正常工作。

我将在元数据文件和代码的屏幕快照下方添加

manifest.json:

"路线":[{
             " pattern":"",
             " name":" appHome",
             " target":" home"
          },{
 " pattern":"雇员",
 " name":" employeeList",
 "目标":"员工"
 },{
 " pattern":" Employee/{employeeId}",
 "名称":"雇员",
 "目标":"员工"
 }],
          "目标":{
             "家":{
                " viewId":"家",
                " viewName":"首页",
                " viewLevel":1
             },
             "未找到": {
                " viewId":" notFound",
                " viewName":"未找到",
                " transition":"显示"
             },
 "雇员": {
 " viewId":" employeeList",
 " viewPath":" de_stersdana.de_stersdana.view.employee",
 " viewName":" EmployeeList",
 " viewLevel":2
 },
 "员工":{
 " viewId":"员工",
 " viewName":" employee.Employee",
 " viewLevel":3
 }
 

EmployeeList.Controler:

 onListItemPressed:function(oEvent){
 var oItem,oCtx;
 oItem = oEvent.getSource();
 oCtx = oItem.getBindingContext();
 this.getRouter()。navTo(" employee",{
 employeeId:oCtx.getProperty(" employee_id")

 

EmployeeList视图:

 
 <页面
 id =" employeeListPage"
 title =" {i18n> EmployeeList}"
 showNavButton =" true"
 navButtonPress ="。onNavBack"
 class =" sapUiResponsiveContentPadding">
 <内容>
 
 <项目>
 
 
 
 
 
  

EmployeeDetails控制器

 onInit:函数(){
 var oRouter = this.getRouter();
 oRouter.getRoute(" employee")。attachMatched(this._onRouteMatched,this);
//提示:我们不想这样做
/*
 oRouter.attachRouteMatched(function(oEvent){
 var sRouteName,oArgs,oView;
 sRouteName = oEvent.getParameter(" name");
 如果(sRouteName ==="员工"){
 this._onRouteMatched(oEvent);
 }
 }, 这个);
 */
 },
 _onRouteMatched:函数(oEvent){
 var oArgs,oView;
 oArgs = oEvent.getParameter(" arguments");
 oView = this.getView();


 oView.bindElement({
 路径:"/img/Employee(" + oArgs.employee_id +")",
 事件:{
 更改:this._onBindingChange.bind(this),
 dataRequested:函数(oEvent){
 oView.setBusy(true);
 },
 dataReceived:函数(oEvent){
 oView.setBusy(false);
 }
 }
 });
 },
 

EmployeeDetails视图

 
 <页面
 id =" employeePage"
 title =" {employee_name}"
 showNavButton =" true"
 navButtonPress ="。onNavBack"
 class =" sapUiResponsiveContentPadding">
 <内容>
 <面板
 id =" employeePanel"
 width =" auto"
 class =" sapUiResponsiveMargin sapUiNoContentPadding">
 
 <工具栏>
 <标题text ="员工ID {employee_id}"级别=" H2"/>
 
 
 

 
 
 
 
 

您能看看我做错了什么吗?

提前谢谢

Dana

metadata.jpg (217.6 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我是SAPUI5应用程序的新手,我从 sapui5.hana开始了导航和路由教程。 .ondemand.com ,我想使用由我创建的OData服务,但步骤7的导航不起作用(导航教程)。 此时会显示员工列表,但是当我想导航到包含有关员工详细信息的页面时,该页面将无法正常工作。

我将在元数据文件和代码的屏幕快照下方添加

manifest.json:

"路线":[{
             " pattern":"",
             " name":" appHome",
             " target":" home"
          },{
 " pattern":"雇员",
 " name":" employeeList",
 "目标":"员工"
 },{
 " pattern":" Employee/{employeeId}",
 "名称":"雇员",
 "目标":"员工"
 }],
          "目标":{
             "家":{
                " viewId":"家",
                " viewName":"首页",
                " viewLevel":1
             },
             "未找到": {
                " viewId":" notFound",
                " viewName":"未找到",
                " transition":"显示"
             },
 "雇员": {
 " viewId":" employeeList",
 " viewPath":" de_stersdana.de_stersdana.view.employee",
 " viewName":" EmployeeList",
 " viewLevel":2
 },
 "员工":{
 " viewId":"员工",
 " viewName":" employee.Employee",
 " viewLevel":3
 }
 

EmployeeList.Controler:

 onListItemPressed:function(oEvent){
 var oItem,oCtx;
 oItem = oEvent.getSource();
 oCtx = oItem.getBindingContext();
 this.getRouter()。navTo(" employee",{
 employeeId:oCtx.getProperty(" employee_id")

 

EmployeeList视图:

 
 <页面
 id =" employeeListPage"
 title =" {i18n> EmployeeList}"
 showNavButton =" true"
 navButtonPress ="。onNavBack"
 class =" sapUiResponsiveContentPadding">
 <内容>
 
 <项目>
 
 
 
 
 
  

EmployeeDetails控制器

 onInit:函数(){
 var oRouter = this.getRouter();
 oRouter.getRoute(" employee")。attachMatched(this._onRouteMatched,this);
//提示:我们不想这样做
/*
 oRouter.attachRouteMatched(function(oEvent){
 var sRouteName,oArgs,oView;
 sRouteName = oEvent.getParameter(" name");
 如果(sRouteName ==="员工"){
 this._onRouteMatched(oEvent);
 }
 }, 这个);
 */
 },
 _onRouteMatched:函数(oEvent){
 var oArgs,oView;
 oArgs = oEvent.getParameter(" arguments");
 oView = this.getView();


 oView.bindElement({
 路径:"/img/Employee(" + oArgs.employee_id +")",
 事件:{
 更改:this._onBindingChange.bind(this),
 dataRequested:函数(oEvent){
 oView.setBusy(true);
 },
 dataReceived:函数(oEvent){
 oView.setBusy(false);
 }
 }
 });
 },
 

EmployeeDetails视图

 
 <页面
 id =" employeePage"
 title =" {employee_name}"
 showNavButton =" true"
 navButtonPress ="。onNavBack"
 class =" sapUiResponsiveContentPadding">
 <内容>
 <面板
 id =" employeePanel"
 width =" auto"
 class =" sapUiResponsiveMargin sapUiNoContentPadding">
 
 <工具栏>
 <标题text ="员工ID {employee_id}"级别=" H2"/>
 
 
 

 
 
 
 
 

您能看看我做错了什么吗?

提前谢谢

Dana

metadata.jpg (217.6 kB)
付费偷看设置
发送
2条回答
大简至美
1楼-- · 2020-08-17 17:21

嗨,达娜,

要基于您共享的元数据导航到员工详细信息,您应该在模式中包含路径:/Employee(émployee_id)/to_Details,它是关联的导航属性 。

我认为,如果您将EmployeeDetails控制器中的路径修改为上述模式,则可以查看所选员工的详细信息。

请告诉我这是否可以解决您的问题

最诚挚的问候,

Rohit

骆驼绵羊
2楼-- · 2020-08-17 17:01

嗨,达娜,

请您分享一下您的生活细节 创建了OData模型(manifest.json条目)。

通过在URL中进行测试,我打算测试OData URL,因此本质上是将我以前的注释中的详细信息附加到odata输出URL中,以检查您是否 能否获得所需的输出。

最诚挚的问候,

罗希特

一周热门 更多>