SAPUI5 - как динамически установить значение для входного параметра в привязке
В моем сервисе XSOData у меня есть объект, основанный на представлении расчета с входными параметрами. Я могу установить эти параметры как константы в моем представлении XML, т.е.
<List items="{dicts>/AncParams(p_dict_name='GROUPS',p_rec_id=2)/Results}" >
<StandardListItem
title="{dicts>NAME}"
/>
</List>
и это будет работать нормально.
Но как я могу установить параметры p_dict_name
а также p_rec_id
динамически? Я пытался использовать привязки выражений для получения значений параметров из другой модели (что-то вроде этого: <List items="{= ${dicts>/AncParams(p_dict_name='GROUPS',p_rec_id=${DictUIProps>/parentId})/Results} }" >
) но без везения. Как я понимаю, привязки выражений не будут работать. Есть ли другой путь?
1 ответ
Насколько я знаю, вы не можете динамически связывать агрегирование через XML. По крайней мере, не в версиях, которые я использовал, и я должен признать, что я не проверял в течение некоторого времени. Строка никогда не интерпретируется для внутренних привязок, пока не будет применена к модели.
Я делаю это через контроллер:
<List id="myList" />
и в вашем контроллере (onBeforeRendering
или же onPatternMatched
или где ваша модель и вид известны контроллеру):
this.getView().byId('myList').bindItems({
model: 'dicts',
path: `{/AncParams(p_dict_name='${p_dict_name}',p_rec_id=${p_rec_id})/Results}`,
template: new sap.m.StandardListItem({
title: '{dicts>NAME}'
})
});
Вы можете использовать getModel('dicts').createKey
функция для генерации пути, который, я полагаю, немного чище.
Это способ применения динамических фильтров, на случай, если вы когда-нибудь создадите их.