SAPUI5将数组行索引绑定到xml视图中的数组行数据

时间:2017-05-22 15:48:07

标签: xml view binding sapui5

我有两个数组:

包含我的数据:数组名称是arrayData

包含我的数据arrayIndex索引

在我的xml视图中,我遍历我的arrayIndex,我想显示arrayData中对应的行。

有可能吗?如果是的话呢?

谢谢和问候。

2 个答案:

答案 0 :(得分:1)

这里有一个灵活的方法:将作业发送到Formatter.js函数。

  1. 我会绑定一个聚合,让我们说我扩展到一些AddressSet:

    <Table id="someTable" 
        items="{path: '/MainSet',
        parameters : 
            {expand:'AddressSet'}
        }"
        growing="true" growingScrollToLoad="true"
     >
    
  2. 然后在聚合中创建一个控件,我将展开的实体集发送到格式化程序

    <Text 
       text="{
          parts:[
            {path: 'AddressSet'},
          ],
          formatter: '.formatter.addressInSearchCatalog'
        }"
    

    &GT;

  3. 然后,在Formatter中,您会注意到展开的实体集只返回一个字符串,该字符串是对象的相对路径。使用此路径,我可以从我的oData模型访问该属性!显然,在Javascript中我可以简单地从我传递给格式化函数的数组中获取第一个(或第二个,或第五个,或最后一个)数组项。

     addressInSearchCatalog: function(otherSet){
                var oModel = this._oCatalog.getModel();
                var addressObj = oModel.getObject("/" + otherSet[0]);//use absolute binding
                    return(addressObj.HouseNumber + space + addressObj.Street + space + addressObj.City + ", " + addressObj.State + space + addressObj.Zip);
                }
            }
        }
    

答案 1 :(得分:0)

您需要先将arrayData合并到arrayIndex,这样您的结构可能如下所示:

{ arrayIndex: [
    { text: 'test1', arrayData: { otherText: 'testData2' } },
    { text: 'test2', arrayData: { otherText: 'testData2' } }
]}

现在您可以在表中使用表(sap.m命名空间)。请务必先定义模型和模型名称。

<Table items="{arrayIndex>/}">
    <columns>
        <Column>
            <Text text="Headline"/>
        </Column>   
    </colums>           
        <items>
            <ColumnListItem>
                <cells>
                    <Text text="{arrayIndex>text}"/>
                        <Table items="{path: 'arrayIndex>arrayData', templateShareable:false}">
                            <columns class="backgroundBlue">
                                <Column>
                                    <Text text="Headline arrayData"/>
                                </Column>
                            </columns>
                                <items>
                                    <ColumnListItem>
                                        <cells>
                                            <Text text="{arrayIndex>otherText}"/>
                                        </cells>
                                    </ColumnListItem>
                                </items>
                        </Table>
                </cells>
            </ColumnListItem>
        </items>
</Table>

您必须在第二张桌子上使用{path: '...', templateShareable:false}才能正常使用。