首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用来自同一模型的参数绑定SAPUI5 XML视图

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

Stack Overflow用户
提问于 2017-07-14 10:39:23
回答 2查看 3.9K关注 0票数 0

我有以下问题:

我想开发一个购物车和有问题的柜台的产品卡,我有问题,以显示数据的摘要视图。

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

示例(来自goToCart按钮)

代码语言:javascript
复制
...
text="{cartData>/currentUser}";
...

一切都显示正确(在本例中),但对于我的项目,我需要绑定一个主绑定(用于购物车的计数器),而这个路径需要为用户提供一个参数。它保存在路径上,如示例中所示。

我已经尝试了很多组合来完成这个错误,但是现在我没有更多的想法了:

我尝试过的组合的一个例子:

代码语言:javascript
复制
text="{ ${cartData>/cartOfUser/} + {cartData>/currentUser} + '/roles/counter'}"

编辑:

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

我的按钮(还没有工作,我需要.):

代码语言:javascript
复制
<m:Button
                id="details.Btn.ShowCart"

                text="{ parts: [
                    {path: 'cartProducts>/cartEntries/'},
                    {path: 'cartProducts>/currentChoice/'},
                    {path: '/addedRoles/counter'}
                ]}"

                type="Emphasized"
                icon="sap-icon://cart-3"
                iconFirst="true"
                width="auto"
                enabled="true"
                visible="true"
                iconDensityAware="false"
                press="showCart"/>

我在LocalStorage中的JSON模型是什么样的:

代码语言:javascript
复制
{
    "cartEntries": {
        "counter": 2,
        "UserId12": {
            "UserId": "UserId12",
            "Email": "Email12",
            "dateCreated": "2017-07-14T13:18:13.632Z",
            "dateUpdated": "2017-07-14T13:18:13.632Z",
            "addedRoles": {
                "counter": 0
            },
            "existingRoles": {
                "counter": 0
            }
        },
        "UserId14": {
            "UserId": "UserId14",
            "Email": "Email14",
            "dateCreated": "2017-07-14T13:18:30.415Z",
            "dateUpdated": "2017-07-14T13:18:30.415Z",
            "addedRoles": {
                "counter": 0
            },
            "existingRoles": {
                "counter": 0
            }
        }
    },
    "currentChoice": "UserId14"
}

带有注释的JSON数据:我需要从"currentChoice“中获取值,用cartEntries中的这些信息搜索正确的计数器。

按钮现在的样子:它以不正确的方式显示数据。请先忽略零..。

目标是将"currentChoice“的值作为”参数“来调用正确用户的信息。

我也尝试过:

代码语言:javascript
复制
text="{= ${= 'cartProducts>/cartEntries/' + ${cartProducts>/currentChoice/} + '/addedRoles/counter' } }"

有用的,但我需要它更“动态”是:

代码语言:javascript
复制
text="{cartProducts>/cartEntries/UserId14/addedRoles/counter}"

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

诚挚的问候

解决方案

我如何解决这个问题:

  1. 向按钮添加格式化程序: /',格式化程序:'.formatter._getCartInt‘}“type=”强调“icon=”sap-图标://cart-3“iconFirst=”真“width=”汽车“enabled=”真“visible=”真“iconDensityAware=”“假”press="showCart"/>
  2. 在我的formatter.js文件中实现格式化程序: this.getView().byId("btn.ShowCart").bindProperty("text",{ var sCurrent =sP1.currentselect;var sFinalString =“cartProducts”/cartEntries/“+ sCurrent + "/addedRoles/counter";sP1 {path: sFinalString,type: newsap.ui.model.type.Integer()};}
EN

回答 2

Stack Overflow用户

发布于 2017-07-14 11:55:46

尝试使用以下方法:

在i18n文件中:

代码语言:javascript
复制
cartInfoTitle=User: {0} has: {1} items in the cart

在XML视图中:

代码语言:javascript
复制
<Text text="{
    parts: [
        {path: 'i18n>cartInfoTitle'}, 
        {path: 'modelName>/property1'}, 
        {path: 'modelName>/property2'}
    ], 
    formatter: 'jQuery.sap.formatMessage'
}" />

因此,您可以声明i18n条目,然后使用预定义的格式化程序来用“部件”数组(文献文章)的值替换占位符。

票数 1
EN

Stack Overflow用户

发布于 2017-07-14 17:53:58

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

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

代码语言:javascript
复制
<Text text="{
    parts: [
        'cartData>/cartEntries',
        'cartData>/currentChoice'
    ], 
    formatter: '.myFormatter'
}" />

JS控制器

代码语言:javascript
复制
controller.prototype.myFormatter = function (cartEntries, currentChoice) {
    if (cartEntries && cartEntries[currentChoice]) {
        return cartEntries[currentChoice].addedRoles.counter;
    }
}

代码未被测试

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45100912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档