我有以下问题:
我想开发一个购物车和有问题的柜台的产品卡,我有问题,以显示数据的摘要视图。
对于这个项目,我使用了XML视图,并且我已经阅读了很多关于绑定的内容。当我想绑定静态路径时,我没有问题。数据来自一个名为"cartData“的JSON模型。
示例(来自goToCart按钮)
...
text="{cartData>/currentUser}";
...一切都显示正确(在本例中),但对于我的项目,我需要绑定一个主绑定(用于购物车的计数器),而这个路径需要为用户提供一个参数。它保存在路径上,如示例中所示。
我已经尝试了很多组合来完成这个错误,但是现在我没有更多的想法了:
我尝试过的组合的一个例子:
text="{ ${cartData>/cartOfUser/} + {cartData>/currentUser} + '/roles/counter'}"编辑:
我代码中的一些虚拟部分:
我的按钮(还没有工作,我需要.):
<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模型是什么样的:
{
"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“的值作为”参数“来调用正确用户的信息。
我也尝试过:
text="{= ${= 'cartProducts>/cartEntries/' + ${cartProducts>/currentChoice/} + '/addedRoles/counter' } }"有用的,但我需要它更“动态”是:
text="{cartProducts>/cartEntries/UserId14/addedRoles/counter}"我希望你们现在明白我的意思了..。*-/
诚挚的问候
解决方案
我如何解决这个问题:
发布于 2017-07-14 11:55:46
尝试使用以下方法:
在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条目,然后使用预定义的格式化程序来用“部件”数组(文献文章)的值替换占位符。
发布于 2017-07-14 17:53:58
回答是这样的:不能在绑定中使用表达式(类也是如此)。因此,要想获得您想要的输出,确实需要一个格式化程序+在绑定部分中包含JSON模型所需的顶级元素(这样它就可以正确地更新)。
XML (我假设您的模型名为“cartData”)
<Text text="{
parts: [
'cartData>/cartEntries',
'cartData>/currentChoice'
],
formatter: '.myFormatter'
}" />JS控制器
controller.prototype.myFormatter = function (cartEntries, currentChoice) {
if (cartEntries && cartEntries[currentChoice]) {
return cartEntries[currentChoice].addedRoles.counter;
}
}代码未被测试
https://stackoverflow.com/questions/45100912
复制相似问题