Sapui5 将控件绑定到OData模型集合的成员

Sapui5 将控件绑定到OData模型集合的成员,sapui5,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将

我已经设置了一个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=“{name}”之类的内容无法执行此任务。像text=“{}”这样的东西当然也不起作用


是否有任何方法可以将sap.m.Token控件的文本属性绑定到我的集合中的字符串?

对于您当前的数据结构,这是完全可能的

那么以下内容如何:


由于
/Tags
是一个很好的字符串数组,因此可以使用标记“as is”,即。E您不需要提供路径



感谢@提供了JSBin示例。

对于您当前的数据结构,这是完全可能的

那么以下内容如何:


由于
/Tags
是一个很好的字符串数组,因此可以使用标记“as is”,即。E您不需要提供路径



感谢@提供了JSBin示例。

我最近遇到了类似的问题,sap.m.MultiComboBox拥有这个属性

selectedKeys : {type : "string[]", group : "Data", defaultValue : []}
选定的键被呈现为令牌,我看不到使Type=“Collection(Edm.String)”在ABAP中工作的方法

我们提出的解决方案是使用一个函数来解析字符串中的标记

parseStringArray: function(sArray) {
    return sArray ? sArray.split(",") : [];
},
行动中

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

我最近也遇到了类似的问题,sap.m.MultiComboBox拥有该属性

selectedKeys : {type : "string[]", group : "Data", defaultValue : []}
选定的键被呈现为令牌,我看不到使Type=“Collection(Edm.String)”在ABAP中工作的方法

我们提出的解决方案是使用一个函数来解析字符串中的标记

parseStringArray: function(sArray) {
    return sArray ? sArray.split(",") : [];
},
行动中

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

我刚刚读了最后一段(在发布我的答案之后)。似乎
text=“{}”
确实有效,或者我只是误解了什么?嗨,Marc,有趣的是,如果您使用的是JSONModel(如jsbin中所示),它确实有效。不过,我不能让它与ODataModel一起工作。我也在尝试将一个jsbin组装起来,但这有点困难,因为它需要进行一个服务调用(CORS等)。明天我会继续。因为OData基本上是JSON,所以我很乐观;)关于CORS。。尝试用这个整洁的CORS应用程序作为URL的前缀,例如。g、 :
https://cors-anywhere.herokuapp.com/https://myservice.com/path/to/service
我在构建一个支持字符串集合的实际服务时遇到了很多问题,该服务可以与OpenUI5(数据服务版本等)进行适当连接。我想我必须通过这一点,因为它太耗时了,而且不能证明花那么多时间解决一个相对较小的问题是合理的。我非常感谢你们为帮助我所做的一切努力。非常感谢!我刚刚读了最后一段(在发布我的答案之后)。似乎
text=“{}”
确实有效,或者我只是误解了什么?嗨,Marc,有趣的是,如果您使用的是JSONModel(如jsbin中所示),它确实有效。不过,我不能让它与ODataModel一起工作。我也在尝试将一个jsbin组装起来,但这有点困难,因为它需要进行一个服务调用(CORS等)。明天我会继续。因为OData基本上是JSON,所以我很乐观;)关于CORS。。尝试用这个整洁的CORS应用程序作为URL的前缀,例如。g、 :
https://cors-anywhere.herokuapp.com/https://myservice.com/path/to/service
我在构建一个支持字符串集合的实际服务时遇到了很多问题,该服务可以与OpenUI5(数据服务版本等)进行适当连接。我想我必须通过这一点,因为它太耗时了,而且不能证明花那么多时间解决一个相对较小的问题是合理的。我非常感谢你们为帮助我所做的一切努力。非常感谢!ODataModel似乎不起作用JSONModel起作用。尽管如此,我还是非常感谢为我创建jsbin的努力,非常感谢!ODataModel似乎不起作用JSONModel起作用。尽管如此,我还是非常感谢为我创建jsbin的努力,非常感谢!这是一个非常有趣的方法。我玩过MultimboBox,这似乎确实适用于selectedKeys。虽然我也在尝试为标记器做同样的事情,但是我在那里仍然很艰难。我希望这样的方法能奏效:这是一个非常有趣的方法。我玩过MultimboBox,这似乎确实适用于selectedKeys。虽然我也在尝试为标记器做同样的事情,但是我在那里仍然很艰难。我希望这样的事情能奏效: