2017-05-22 4 views
0

나는 두 어레이가 내 데이터를 포함SAPUI5 바인드 어레이 행 인덱스

하나 어레이 이름 arrayData

내 데이터의 인덱스

을 arrayIndex 함유

하나이다 내 XML보기 내 arrayIndex 통해 루프 및 arrayData에 해당하는 행을 표시 할 싶어요.

가능합니까? 그렇다면 어떻게?

감사합니다.

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

는 이제 테이블 (sap.m 네임 스페이스) 내에서 표를 사용할 수있다 : 당신의 구조는 다음과 같이 보일 수 있습니다

답변

0

당신은, 당신의 arrayIndex 처음으로 arrayData을 병합해야합니다. 이전에 모델과 모델 이름을 정의했는지 확인하십시오.

<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}를 사용해야합니다.

1

다음은 매끄러운 방법입니다. 작업을 Formatter.js 함수로 보냅니다.

  1. 나는 집계를 결합하고, 이제 좀 AddressSet으로 확장 말씀 드리겠습니다 :

    <Table id="someTable" 
        items="{path: '/MainSet', 
        parameters : 
         {expand:'AddressSet'} 
        }" 
        growing="true" growingScrollToLoad="true" 
    > 
    
  2. 가 그럼 난 내 포맷으로 확장 entityset을 보내 집계 내에서 컨트롤을 만들

    이어서>

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

    포맷터 중, Y 확장 된 엔티티 세트가 단순히 객체의 상대 경로 인 문자열을 반환한다는 것을 알 수 있습니다. 이 경로를 사용하여 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); 
          } 
         } 
        }