【问题标题】:SAPUI5 bind array row index to array row data in xml viewSAPUI5 将数组行索引绑定到 xml 视图中的数组行数据
【发布时间】:2017-05-22 15:48:07
【问题描述】:

我有两个数组:

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

一个包含我的数据数组索引的索引

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

有可能吗?如果是的话,怎么办?

感谢和问候。

【问题讨论】:

    标签: xml view binding sapui5


    【解决方案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'
          }"
      

      >

    3. 然后,在格式化程序中,您会注意到展开的实体集只返回一个字符串,该字符串是对象的相对路径。使用此路径,我可以从我的 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);
                  }
              }
          }
      

    【讨论】:

      【解决方案2】:

      您需要先将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} 才能正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多