更新购物车按钮的物品计数器

2020-09-20 17:12发布

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

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


嗨,

我正在UI5应用程序中实现购物车功能,以收集项目集合以进行进一步处理。 我的购物车可以作为我的主从应用程序的功能正常工作。

我要添加的一件事是购物车按钮旁边的计数器,用于通知用户当前购物车中有多少个物品。 当我使用$ count选项时,我的网关服务愉快地返回正确的值。 到目前为止,一切都很好。

我正在努力的是

  1. 更新按钮旁边的计数器的正确位置
  2. 检索oData响应

re 1:我决定在 onBeforeRendering 方法中检索计数器。 尽管我很高兴在这里听任何建议。

关于2:我正在使用下面的代码。

 onBeforeRendering:function(){
 var oCountModel = new sap.ui.model.odata.v2.ODataModel(" <​​oData GW service>");

 oCountModel.read("/img/cartSet/$ count",{
 方法:" GET",
 异步:假,
 成功:功能(数据){
 var response =(JSON.stringify(data));
 },
 错误:function(){
 }
 });
 },
 

上面的代码同步调用服务,但不返回服务响应("数据未定义")。 但是,稍后我可以在Chrome的"网络"标签中看到响应。

因此,基本上,该服务可以正常工作并被调用,但是由于某种原因,我似乎无法获得最终的响应。

任何想法/提示我在哪里出错?

servicecall-response.jpeg (29.0 kB)

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

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


嗨,

我正在UI5应用程序中实现购物车功能,以收集项目集合以进行进一步处理。 我的购物车可以作为我的主从应用程序的功能正常工作。

我要添加的一件事是购物车按钮旁边的计数器,用于通知用户当前购物车中有多少个物品。 当我使用$ count选项时,我的网关服务愉快地返回正确的值。 到目前为止,一切都很好。

我正在努力的是

  1. 更新按钮旁边的计数器的正确位置
  2. 检索oData响应

re 1:我决定在 onBeforeRendering 方法中检索计数器。 尽管我很高兴在这里听任何建议。

关于2:我正在使用下面的代码。

 onBeforeRendering:function(){
 var oCountModel = new sap.ui.model.odata.v2.ODataModel(" <​​oData GW service>");

 oCountModel.read("/img/cartSet/$ count",{
 方法:" GET",
 异步:假,
 成功:功能(数据){
 var response =(JSON.stringify(data));
 },
 错误:function(){
 }
 });
 },
 

上面的代码同步调用服务,但不返回服务响应("数据未定义")。 但是,稍后我可以在Chrome的"网络"标签中看到响应。

因此,基本上,该服务可以正常工作并被调用,但是由于某种原因,我似乎无法获得最终的响应。

任何想法/提示我在哪里出错?

servicecall-response.jpeg (29.0 kB)
付费偷看设置
发送
6条回答
空代码
1楼-- · 2020-09-20 17:54

迈克尔,你好,

您可以在manifest.json中定义模型,然后在控制器的onInit方法中调用。 否则,您也可以调用component.js。

oResult直接返回一个整数值,您可以将其绑定到本地json模型。

 var oViewModel = new JSONModel({
 cartCount:"",
 });
 this.setModel(oViewModel," appView");

 this.getOwnerComponent()。getModel(" cartItems")。read("/img/CartItems/$ count",{
  成功:函数(oResult){
  oViewModel.setProperty("/img/cartCount",oResult);
    }
   }); 

将本地json模型属性绑定到购物车按钮

 <按钮id =" cartBtn" press =" onShoppingCartPressed" icon =" sap-icon://cart" type =" Emphasized" text =" {appView>/cartCount}"
 
Doze时光
2楼-- · 2020-09-20 17:42

刚刚意识到我回复了我的原始帖子,而不是您的答案。 无论如何...:-)

骆驼绵羊
3楼-- · 2020-09-20 18:02

您好Tarun

首先谢谢您的答复。

我已经将您建议的代码添加到我的onInit方法中,如下所示:

 onInit:function(){
 var oViewModel = new JSONModel({
 忙:错误,
 延迟:0
 cartCount:""
 });
//(..省略代码..)
         this.setModel(oViewModel," detailView");
 this.getOwnerComponent()。getModel()。read("/img/cartSet/$ count",{
 成功:function(oResult){
 oViewModel.setProperty("/img/cartCount",oResult);
 }
 });
 },
 

manifest.json中的模型现在看起来像这样:

"数据":{
 " dataSource":" MY_SRV",
 " preload":false,
 "设置":{
         " useBatch":否
         }
 }
 

detailView.xml

 /cartCount}" type ="默认" icon =" sap-icon://cart" iconFirst =" true" width =" auto" enabled =" true" visible =  " true" press =" _ onButtonCart"/>
 

Chrome中的网络消息响应如下:

Chrome控制台告诉我:"段'cartSet'找不到资源",这似乎表明我的元数据不匹配,但我看不到原因。 我还尝试提供服务参数,例如:找不到服务接受的段'cartSet(Username = xyz',ItemNo = 1)'的资源。 但这导致控制台中的响应相同(但仍可在GW客户端中使用)。

当我使用$ count参数测试GW服务时,这是成功的响应。 我也尝试过为服务提供服务参数(键和项号),而根据GW服务的编码,则不需要这些参数。 但这并没有改变。

 GW客户端

希望这可以进一步阐明这一点。 任何进一步的帮助表示赞赏。

再次感谢

M

渐行渐远_HoldOn
4楼-- · 2020-09-20 17:37

我看到您的模型名称是data ..您应该在.getModel()期间添加模型名称

 this.getOwnerComponent()。getModel(" data")。read("/img/cartSet/$ count",

另外,buttontext应该映射到json模型detailView。

愤怒的猪头君
5楼-- · 2020-09-20 17:42

嗨,迈克尔,

您是否已将数据源映射到ur manisfeat.json中的模型?

此致

Tarun

风早神人
6楼-- · 2020-09-20 17:36

您是否尝试过事务/n/iwfnd/traces来查找SAP网关系统收到的http请求的样子?

此致

安德烈

一周热门 更多>