使用来自同一模型的参数进行SAPUI5 XML视图绑定

使用来自同一模型的参数进行SAPUI5 XML视图绑定,xml,routing,sapui5,Xml,Routing,Sapui5,我有以下问题: 我想开发一个购物车,但产品卡的计数器有问题,在摘要视图中显示数据也有问题 对于这个项目,我使用XML视图,我已经阅读了很多关于绑定的内容。当我想要绑定一个静态路径时,我没有问题。数据来自一个名为“cartData”的JSON模型 示例(来自goToCart按钮) 所有内容都显示正确(在示例中),但对于我的项目,我需要绑定一个主绑定(用于购物车的计数器),并且该路径需要用户的一个参数。它保存在示例中所示的路径上 我已经尝试了很多组合来实现这个bug,但现在我没有更多的想法:-( 我

我有以下问题:

我想开发一个购物车,但产品卡的计数器有问题,在摘要视图中显示数据也有问题

对于这个项目,我使用XML视图,我已经阅读了很多关于绑定的内容。当我想要绑定一个静态路径时,我没有问题。数据来自一个名为“cartData”的JSON模型

示例(来自goToCart按钮)

所有内容都显示正确(在示例中),但对于我的项目,我需要绑定一个主绑定(用于购物车的计数器),并且该路径需要用户的一个参数。它保存在示例中所示的路径上

我已经尝试了很多组合来实现这个bug,但现在我没有更多的想法:-(

我尝试过的组合示例如下:

text="{ ${cartData>/cartOfUser/} + {cartData>/currentUser} + '/roles/counter'}"
编辑:

我的代码中的一些虚拟部分:

我的按钮(还不起作用我需要什么…):

带注释的我的JSON数据:

按钮现在的外观:

目标是获取“currentChoice”的值,并将其用作“参数”,以便为正确的用户调用信息

我也试过:

text="{= ${= 'cartProducts>/cartEntries/' + ${cartProducts>/currentChoice/} + '/addedRoles/counter' } }"
有效但我更需要“动态”的是:

我希望你们现在明白我的意思了-/

致意

解决方案

我如何解决问题:

  • 将格式化程序添加到按钮:

    /",, 格式化程序:'.formatter.\u getCartInt' }" type=“强调” icon=“sap-icon://cart-3" iconFirst=“true” 宽度=“自动” enabled=“true” visible=“true” iconDensityAware=“false” 按=“showCart”/>

  • 在my formatter.js文件中实现格式化程序:

    _getCartInt:函数(sP1){ var sCurrent=sP1.currentChoice; var sFinalString=“cartProducts>/carentries/”+sCurrent+“/addedRoles/counter”; this.getView().byId(“btn.ShowCart”).bindProperty(“text”,{path:sFinalString,type:new sap.ui.model.type.Integer()});}


  • 尝试使用以下方法:

    在i18n文件中:

    cartInfoTitle=User: {0} has: {1} items in the cart
    
    在XML视图中:

    <Text text="{
        parts: [
            {path: 'i18n>cartInfoTitle'}, 
            {path: 'modelName>/property1'}, 
            {path: 'modelName>/property2'}
        ], 
        formatter: 'jQuery.sap.formatMessage'
    }" />
    
    
    

    因此,您需要声明i18n条目,然后使用预定义的格式化程序将占位符替换为“parts”数组()中的值。

    好的,回答如下:您不能在绑定中使用表达式(同样适用于类)。因此,要获得所需的输出,您确实需要一个格式化程序+在绑定部分中包含JSON模型所需的顶级元素(以便正确更新)

    XML(我假设您的模型名为“cartData”)


    [未测试的代码]

    您需要一个格式化程序(或不同的绑定方法)。如果您共享一些代码,可能会有更多帮助:)cartOfUser属性包含什么?@AndriiNaumovych:它包含有关用户及其购物车的信息。
    text="{= ${= 'cartProducts>/cartEntries/' + ${cartProducts>/currentChoice/} + '/addedRoles/counter' } }"
    
    text="{cartProducts>/cartEntries/UserId14/addedRoles/counter}"
    
    cartInfoTitle=User: {0} has: {1} items in the cart
    
    <Text text="{
        parts: [
            {path: 'i18n>cartInfoTitle'}, 
            {path: 'modelName>/property1'}, 
            {path: 'modelName>/property2'}
        ], 
        formatter: 'jQuery.sap.formatMessage'
    }" />
    
    <Text text="{
        parts: [
            'cartData>/cartEntries',
            'cartData>/currentChoice'
        ], 
        formatter: '.myFormatter'
    }" />
    
    controller.prototype.myFormatter = function (cartEntries, currentChoice) {
        if (cartEntries && cartEntries[currentChoice]) {
            return cartEntries[currentChoice].addedRoles.counter;
        }
    }