问题将数据从视图1绑定到视图2

2020-09-20 12:09发布

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

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


嗨,我在绑定模型数据时遇到问题,

问题是,当我对表中的一项感到好奇时,将其路由到"详细信息"视图,甚至我的uri也正在更改。 例如:如果我对第一项感兴趣但未打印信息,则转到http://localhost:57936/PruebaKaufmann/index.html#/detail/0。 可能是什么? (我正在使用罗斯文的odata)


如果我选择第一项,应该打印什么

" ID":0,
 "名称":"面包",
 "描述":"全麦面包",
 " ReleaseDate":"/img/Date(694224000000)/",
 " DiscontinuedDate":null,
 "评分":4
 "价格":" 2.5",
 

这是我的view1(Main.xml)

 
 
 <列>
 <栏目>
 
 

 <栏目>
 
 

 <栏目>
 
 
 

 <项目>
 
 <单元格>
 
 
 
 
 
 

 

这是它的控制器

 onInit:function(){
 var sURI =" http://services.odata.org/V2/OData/OData.svc";
 var oDataModel = new ODataModel(sURI,true);
 var oModel = new JSONModel();

 var oTable = this.byId(" miTabla");

 oDataModel.read("/img/Products",{
 成功:函数(oData,响应){
 var oResults = oData.results;
 oModel.setData(oResults);
 oTable.setModel(oModel);
 }
 });
 },


 onSelectionChange:function(oEvt){
 var item = oEvt.getParameter(" listItem");
 item.firePress();
 },


 itemPress:function(oEvent){
 var sId = oEvent.getSource()。getBindingContext()。getProperty(" ID");
 this.getOwnerComponent()。getRouter()
 .navTo(" detail",
 {Id:sId});
 },


 algunEvento:function(){
 MessageToast.show(" Bienvenido a Kaufmann");
 }
 

这是我的第二个观点(详细信息)

 
 
 
 
 

和以上视图的控制器:

 onInit:function(){
 this.getOwnerComponent()。getRouter()。getRoute(" detail")。attachPatternMatched(this._onRouteMatched,this);
 },


 _onRouteMatched:function(oEvent){
 var Id = oEvent.getParameter(" arguments")。Id;
 this.getView()。bindElement("/img/Id/" + ID);
 },


 onNavBack:function(){
 var oHistory = sap.ui.core.routing.History.getInstance(),
 sPreviousHash = oHistory.getPreviousHash();
 如果(sPreviousHash!==未定义){
//历史记录包含上一个条目
 history.go(-1);
 }
 }
 

最后但并非最不重要的是我的清单:

"路由":{
 " config":{
 " routerClass":" sap.m.routing.Router",
 " viewType":" XML",
 " viewPath":" prueba.kaufmann.view",
 " controlId":" app",
 " controlAggregation":"页面",
 "异步":是的,
 " transition":" slide"
 },
 "路线":[
 {
 " pattern":"",
 " name":" Main",
 " target":" Main"
 },
 {
 " pattern":" detail/:Id:",
 " name":"详细信息",
 " target":"详细信息"
 }
 ],
 "目标":{
 "主要":{
 " viewId":" main",
 " viewName":"主要"
 },
 "详细信息":{
 " viewId":"详细信息",
 " viewName":"详细信息"
 }
 }
 

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

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


嗨,我在绑定模型数据时遇到问题,

问题是,当我对表中的一项感到好奇时,将其路由到"详细信息"视图,甚至我的uri也正在更改。 例如:如果我对第一项感兴趣但未打印信息,则转到http://localhost:57936/PruebaKaufmann/index.html#/detail/0。 可能是什么? (我正在使用罗斯文的odata)


如果我选择第一项,应该打印什么

" ID":0,
 "名称":"面包",
 "描述":"全麦面包",
 " ReleaseDate":"/img/Date(694224000000)/",
 " DiscontinuedDate":null,
 "评分":4
 "价格":" 2.5",
 

这是我的view1(Main.xml)

 
 
 <列>
 <栏目>
 
 

 <栏目>
 
 

 <栏目>
 
 
 

 <项目>
 
 <单元格>
 
 
 
 
 
 

 

这是它的控制器

 onInit:function(){
 var sURI =" http://services.odata.org/V2/OData/OData.svc";
 var oDataModel = new ODataModel(sURI,true);
 var oModel = new JSONModel();

 var oTable = this.byId(" miTabla");

 oDataModel.read("/img/Products",{
 成功:函数(oData,响应){
 var oResults = oData.results;
 oModel.setData(oResults);
 oTable.setModel(oModel);
 }
 });
 },


 onSelectionChange:function(oEvt){
 var item = oEvt.getParameter(" listItem");
 item.firePress();
 },


 itemPress:function(oEvent){
 var sId = oEvent.getSource()。getBindingContext()。getProperty(" ID");
 this.getOwnerComponent()。getRouter()
 .navTo(" detail",
 {Id:sId});
 },


 algunEvento:function(){
 MessageToast.show(" Bienvenido a Kaufmann");
 }
 

这是我的第二个观点(详细信息)

 
 
 
 
 

和以上视图的控制器:

 onInit:function(){
 this.getOwnerComponent()。getRouter()。getRoute(" detail")。attachPatternMatched(this._onRouteMatched,this);
 },


 _onRouteMatched:function(oEvent){
 var Id = oEvent.getParameter(" arguments")。Id;
 this.getView()。bindElement("/img/Id/" + ID);
 },


 onNavBack:function(){
 var oHistory = sap.ui.core.routing.History.getInstance(),
 sPreviousHash = oHistory.getPreviousHash();
 如果(sPreviousHash!==未定义){
//历史记录包含上一个条目
 history.go(-1);
 }
 }
 

最后但并非最不重要的是我的清单:

"路由":{
 " config":{
 " routerClass":" sap.m.routing.Router",
 " viewType":" XML",
 " viewPath":" prueba.kaufmann.view",
 " controlId":" app",
 " controlAggregation":"页面",
 "异步":是的,
 " transition":" slide"
 },
 "路线":[
 {
 " pattern":"",
 " name":" Main",
 " target":" Main"
 },
 {
 " pattern":" detail/:Id:",
 " name":"详细信息",
 " target":"详细信息"
 }
 ],
 "目标":{
 "主要":{
 " viewId":" main",
 " viewName":"主要"
 },
 "详细信息":{
 " viewId":"详细信息",
 " viewName":"详细信息"
 }
 }
 
付费偷看设置
发送
2条回答
clever101
1楼-- · 2020-09-20 12:27

您的bind元素需要整个上下文路径,而不仅仅是ID。 您可以自己在控制器中构造它,也可以从itemPress事件中传递它

暮风yp
2楼-- · 2020-09-20 12:09

您需要构造整个路径,而不是所有数据。 也许看看教程中的例子。

一周热门 更多>