如何在xml视图类型的第二个视图中更新模型数据

2020-09-10 02:08发布

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

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


嗨,

SAP UI5的新手,正在处理SAP UI5中采购订单的清单应用程序,其中采购订单在表中显示为超链接。

单击" Purchase Order"(采购订单)超级行(例如P1001),导航到" Detail View"(详细信息视图),并显示所选采购订单的所有详细信息:P1001。

它工作正常,但是当我导航回列表视图并选择另一个采购订单P1002时,"详细信息"视图中的详细信息仍然显示P1001的旧采购订单详细信息。

此处将模型设置为钩子方法onAfterRendering:function(){}

的"详细信息"视图

当我导航至详细信息视图时第一次调用此方法,但是再次导航至第二次等,则未调用此方法,因此详细信息视图显示了我们首先选择的采购订单数据。

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

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


嗨,

SAP UI5的新手,正在处理SAP UI5中采购订单的清单应用程序,其中采购订单在表中显示为超链接。

单击" Purchase Order"(采购订单)超级行(例如P1001),导航到" Detail View"(详细信息视图),并显示所选采购订单的所有详细信息:P1001。

它工作正常,但是当我导航回列表视图并选择另一个采购订单P1002时,"详细信息"视图中的详细信息仍然显示P1001的旧采购订单详细信息。

此处将模型设置为钩子方法onAfterRendering:function(){}

的"详细信息"视图

当我导航至详细信息视图时第一次调用此方法,但是再次导航至第二次等,则未调用此方法,因此详细信息视图显示了我们首先选择的采购订单数据。

付费偷看设置
发送
4条回答
小熊yu生菜
1楼 · 2020-09-10 03:04.采纳回答

onAfterRendering()仅在第一次渲染视图时被调用一次。 下次您导航到该视图时,它不会再被调用,因此在此处设置绑定将只起作用一次。

您需要为路由匹配设置事件处理程序。 在详细视图控制器的onInit()方法中,添加以下内容:

 this.getOwnerComponent()。getRouter()。getRoute(" Detail")。attachPatternMatched(this._onRouteMatched,this); 

然后在您的控制器中创建一个名为_onRouteMatched()的方法并将该视图绑定在那里。

clasier
2楼-- · 2020-09-10 02:43

您能分享您的导航和模式匹配代码吗?

jovirus
3楼-- · 2020-09-10 02:58

您好,克鲁什纳,

请找到以下代码

用于导航的代码如下:
 ****************************导航*********************  **********************
 var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
 oRouter.navTo(" R_LIST_DISPLAY_PURCHASEORDER_NAME",true);
 ***************************导航**********************  **********************
 模式显示在下面
 ***************************清单JSON *********************  ********************
 {
   " pattern":" LIST_DISPLAY_PURCHASEORD",
    "名称":" R_LIST_DISPLAY_PURCHASEORDER_NAME",
    " target":" R_LIST_DISPLAY_PURCHASEORD_TAR"
 }
 " R_LIST_DISPLAY_PURCHASEORD_TAR":
  {
    " viewId":" APP_LIST_DISPLAY_PURCHASEORD_ID",
    " viewName":" List.Display"
  }
 ***************************清单JSON *********************  ********************
 上面的代码在列表控制器中执行,并且正在导航P
 
亦是此间程序员
4楼-- · 2020-09-10 03:01

您需要在浏览以下内容时传递所选的采购订单编号。

 var sBusinessPartnerID = oItem.getBindingContext()。getProperty(" BusinessPartnerID"  );

 this.getOwnerComponent()。getRouter()。navTo(" RouteDetail",{BusinessPartnerID:sBusinessPartnerID
 }); 

然后在详细的控制器中执行以下操作

onInit:function(){

var oRouter = this.getOwnerComponent()。getRouter(); oRouter.getRoute(" RouteDetail")。attachMatched(this._onRouteMatched,this);

},

_onRouteMatched:函数(oEvent){

var that = this;

var oArgs,oView;

oArgs = oEvent.getParameter(" arguments");

oView = this.getView();

oView.bindElement({ 路径:"/img/BusinessPartnerSet('" + oArgs.BusinessPartnerID +"')", 事件:{ dataRequested:函数(oEvent){ //that.getView().setBusy(true); }, dataReceived:函数(oEvent){ //that.getView()。setBusy(true);

} } }); }

 

一周热门 更多>