Как вложить две модели данных в привязку данных в sapui5 - PullRequest
0 голосов
/ 30 мая 2019

Я хочу сделать что-то вроде следующего в sapui5 , где вложены два списка , но описание не отображается, независимо от того, что я изменяю.

Кто-нибудь может помочь? Возможно ли это вообще?

И более того, я на самом деле просто хочу добавить некоторые текстовые элементы управления или метки во внутренний список (и мне нужно что-то вроде списка с путем или элементами, чтобы связать его), есть ли другая возможность сделать это вместо StandardListItem, чтобы он лучше подходил к верхней части?

    <List headerText="Events" items="{path: 'model1>/'}" >
       <items>
        <CustomListItem type="Navigation">
             <HBox>
                <VBox>
                    <Label text="{model1>message}"/>
                    <Text text="{model1>date}"></Text>
                    <Text text="{model1>time}"></Text>

                    <List id="MasterAttributeList" items="{ path: 'model2>/' }">
                            <items>
 critical part -->            <StandardListItem title="{model1>description}" 
                                           description="{model2>{= ${model1>key}}}"/>
                            </items>
                       </List>
                </VBox>
                 </HBox>
             </CustomListItem>
        </items>               
    </List>

С наилучшими пожеланиями!

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Я бы предложил использовать форматтер.

Функция может выглядеть так:

formatDescription(oItem, sKey) {
    return oItem[sKey];
}

и ваш XML может выглядеть так

    <StandardListItem 
        title="{model1>description}"
        description="{ 
            parts: [ 'model2>', 'model1>key' ], 
            formatter: '.formatter.formatDescription' 
        }"/>

Объяснение: Используя model2> как часть вашего средства форматирования, вы передаете полный объект (а не только одно свойство), который связан с элементом, в средство форматирования.


Что касается вашего второго вопроса, почему бы вам не использовать другой CustomListItem в своем внутреннем списке, который соответствует вашим потребностям?

0 голосов
/ 31 мая 2019

Вы не можете связать их так, как вы, так как это агрегирование.Согласно вашему XML-представлению это вложенный список, это означает, что вам необходимо иметь вложенные данные для привязки.

Например: вложенные данные

{ 
  'items': [
    { 
        'message': "ss", 
        'date': "2020-12-12", 
        'time': "12:00",
        'items1': [
            { 'description': "description", 'key': "2141" },
            { 'description': "description", 'key': "2141" },
            { 'description': "description", 'key': "2141" }     
        ]

    }, 
    { 
        'message': "ss", 
        'date': "2020-12-12", 
        'time': "5:00",
        'items1': [
            { 'description': "description", 'key': "2141" },
            { 'description': "description", 'key': "2141" },
            { 'description': "description", 'key': "2141" }     
        ] 
    }, 
    { 
        'message': "fff", 
        'date': "2020-12-12", 
        'time': "8:00",
        'items1': [
            { 'description': "description", 'key': "2141" },
            { 'description': "description", 'key': "2141" },
            { 'description': "description", 'key': "2141" }     
        ]  
    }
  ] 
}

Приведенные выше данные отлично работают для вложенного списка, а также необходимо упомянуть свойство templateShareable: true

<List headerText="Events" items="{path: '/items'}" >
    <items>
       <CustomListItem type="Navigation">
         <HBox>
            <VBox>
                <Label text="{message}"/>
                <Text text="{date}"></Text>
                <Text text="{time}"></Text>
                <List items="{path:'items1', templateShareable: true}">
                    <items>
                        <StandardListItem title="{description}" description="{key}"/>
                    </items>
                </List>
            </VBox>
        </HBox>
    </CustomListItem>
  </items>
</List>

Примечание. Используйте форматирование в соответствии с вашими требованиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...