点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好社区,当我要遍历读取的参数进行路由时出现错误,但我找不到问题所在
ListInvoice.controller.js?eval:38未捕获的TypeError:无法读取未定义的属性'getPath'
这是我的代码
清单
"路由":{ " config":{ " routerClass":" sap.m.routing.Router", " viewType":" XML", " viewPath":" kauf.databinding.app.view", " controlId":" apx", " controlAggregation":"页面", "异步":true }, "路线":[ { " pattern":"", " name":" main", " target":" main" }, { " pattern":" detail/{invoicePath}", " name":"详细信息", " target":"详细信息" } ], "目标":{ "主要":{ " viewID":" main", " viewName":"主要" }, "详细信息":{ " viewId":"详细信息", " viewName":"详细信息" } } }
Component.js
sap.ui.define([ " sap/ui/core/UIComponent" ],函数(UIComponent,JSONModel){ "使用严格"; 返回UIComponent.extend(" kauf.databinding.app.Component",{ 元数据:{ 清单:" json" }, 初始化:函数(){ //调用父级的init函数 UIComponent.prototype.init.apply(this,arguments); //根据url/hash创建视图 this.getRouter()。initialize(); } }); });
我正在调用路线明细的列表发票,我已经将其添加到了一个对象列表项中
type =" Navigation" press =" onPress"
listinvoice.view
/发票", 分类器:{ 路径:" ShipperName", 降序:false, 组:真实 } }">
<工具栏标题=" {i18n> invoiceListTitle}"> <项目>工具栏> ExtendedPrice'},{path:'view>/currency'}], 类型:" sap.ui.model.type.Currency", formatOptions:{ showMeasure:错误 } }" numberUnit =" {view>/currency}" numberState =" {= $ {invoice.old> ExtendedPrice}> 50吗?'Error':'Success'}" type =" Navigation" press =" onPress"> 列表>状态", formatter:'.formatter.statusText'}"/> <!-un"。" delante del formatter具有实际意义,而实际的控制权->
listinvoice.controller
sap.ui.define([ " sap/ui/core/mvc/Controller", " sap/ui/model/json/JSONModel", " kauf/databinding/app/model/formatter", " sap/ui/model/Filter", " sap/ui/model/FilterOperator", " sap/m/MessageToast" ],函数(控制器,JSONModel,格式化程序,过滤器,FilterOperator,MessageToast){ "使用严格"; 返回Controller.extend(" kauf.databinding.app.controller.ListInvoice",{ formatter:formatter,////远景不可见 onInit:function(){ var oViewModel = new JSONModel({ 货币:" EUR" }); this.getView()。setModel(oViewModel," view"); }, onBuscarFiltro:函数(oEvent){ var oArray = []; var sQuery = oEvent.getParameter(" query"); 如果(sQuery){ oArray.push(new Filter(" ProductName",FilterOperator.Contains,sQuery)); } var oList = this.byId(" listaInvo"); var oBinding = oList.getBinding(" items"); oBinding.filter(oArray); }, onPress:函数(oEvent){ var oItem = oEvent.getSource(); var oRouter = sap.ui.core.UIComponent.getRouterFor(this); oRouter.navTo(" detail",{ invoicePath:oItem.getBindingContext(" invoice")。getPath()。substr(1) }); } }); });
所以在我的detail.controller中,我有这个,我的detail.view中只有一个带有硬代码的文本
sap.ui.define([ " sap/ui/core/mvc/Controller" ],函数(控制器){ "使用严格"; return Controller.extend(" kauf.databinding.app.controller.Detail",{ onInit:函数(){ var oRouter = sap.ui.core.UIComponent.getRouterFor(this); //Traemos la instancia del router" app" oRouter.getRoute(" detail")。attachPatternMatched(this._onObjectMatched,this); //y lo ligamos沿路线"详细" con attachPatternMatched //沿路线进行accedimos por el nombre注册 //功能性国际舞曲 }, _onObjectMatched:function(oEvent){//接收参数并接受参数设置 this.getView()。bindElement({////清单路径清单列表中的控制列表,视图绑定和上下文绑定表 路径:"/" + oEvent.getParameter(" arguments")。invoicePath,//列表中的清单/清单 型号:"发票" }); } }); });
。
VIEW,而不是控制器……花花公子
是的,正如Jun所说,我们需要 查看您的查看代码。 看来您控制器中的代码(listinvoice.controller)与SAPUI5" Walk-through"教程的代码相似/相同……大约类似于步骤33。 该代码取决于分配了"发票"模型的视图,因此它可以在该模型中找到所选表项的位置/路径(即getBindingContext(" invoice")。getPath()。substr(1))。 。
我将名称模型更改为invoiceold并在视图中进行了引用,现在这是我在listtinvoce.controller上的代码
您已假定ListInvoice控制器中的这一行代码
给您物品。 那是不正确的。
首先获取路径,然后获取映射到该路径的对象(oItem):
您的导航应如下所示:
我遇到了一个错误:sPath不是函数
这是我根据您的建议修改的代码:
一周热门 更多>