我已经设置了一个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>
现在显示标签列表,如下所示:
下一步是使用标记集合中的字符串替换硬编码的标记文本。我想知道我应该怎么做。该数组中的字符串没有名称,所以像text =&#34; {Name}&#34;不能胜任这项工作。像text =&#34; {}&#34;当然也没有用。
有什么方法可以将sap.m.Token控件的text属性绑定到我的集合中的字符串?
答案 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
}
})