将控件绑定到OData模型

时间:2016-01-23 09:08:41

标签: sapui5

我已经设置了一个oData服务,它返回一个字符串集合中实体的标签。如果你看一下metadata.xml,你会看到类似这样的东西:

<Property Name="Tags" Type="Collection(Edm.String)"/>

一个典型的实体会喜欢这样:

{
    "Id": 120983,
    "Title": "Title of something awesome!",
    "Tags": [ "Tag1", "Tag2" ]
}

我希望使用sap.m.Tokenizer和sap.m.Token将标记列表显示为一组标记。为此,我将以下部分包含在我的xml视图中:

<core:Title text="Tags" />
<Tokenizer tokens="{Tags}">
    <Token text="tag" editable="false" />
</Tokenizer>

现在显示标签列表,如下所示:

enter image description here

下一步是使用标记集合中的字符串替换硬编码的标记文本。我想知道我应该怎么做。该数组中的字符串没有名称,所以像text =&#34; {Name}&#34;不能胜任这项工作。像text =&#34; {}&#34;当然也没有用。

有什么方法可以将sap.m.Token控件的text属性绑定到我的集合中的字符串?

2 个答案:

答案 0 :(得分:2)

您目前的数据结构完全可以实现。

以下内容如何:http://jsbin.com/yisumilana/1/edit?html,output

<Tokenizer tokens="{path: '/Tags'}">
    <Token text="{}" editable="false" />
</Tokenizer>

因为/Tags是一个很好的事物。字符串数组,你可以使用标签&#34;原样&#34;,i。即你不需要提供路径。

感谢@ keshet提供JSBin示例。

答案 1 :(得分:1)

我最近遇到过类似的问题,sap.m.MultiComboBox有属性

selectedKeys : {type : "string[]", group : "Data", defaultValue : []}

所选的键被渲染为标记,我无法看到一种方法来生成Type =&#34; Collection(Edm.String)&#34;在ABAP工作

我们提出的解决方案是使用一个从字符串

解析标记的函数
parseStringArray: function(sArray) {
    return sArray ? sArray.split(",") : [];
},

行动

new MultiComboBox({
    selectedKeys: {
        path: "Tags",
        formatter: this.parseStringArray
    }
})