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 функция для генерации пути, который, я полагаю, немного чище.

Это способ применения динамических фильтров, на случай, если вы когда-нибудь создадите их.

Другие вопросы по тегам