2014-10-03 7 views
0

Я очень новичок в SAPUI5 и думаю, что IconTabBar/IconTabFilter может помочь мне со страницей, которую я создаю. Я не уверен, что могу делать то, что хочу, но надеюсь, что так ....SAPUI5 IconTabBar/IconTabFilter динамическое построение

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

Итак: Клиент XYZ

Product A 
User 1 
User 2 

Product B 
User 1 

Я хотел бы использовать IconTabBar, чтобы пользователи могли видеть все, или увидеть только конкретный продукт (A или B). Мой вопрос в том, может ли IconBar и фильтрация создаваться динамически? Например, каждый клиент не обязательно имеет более одного продукта. Поэтому я хочу иметь возможность получать возможные продукты из json-вызова, а затем показывать только значки для возвращаемых продуктов.

Мой файл XML в настоящее время выкладывается как следующий (выезд некоторые из кода, чтобы сделать его легче увидеть):

<Shell> 
    <Page title="{/columnValue} Details" showNavButton="true" navButtonPress="goBack"> 
    <ObjectHeader> 
    </ObjectHeader> 
     <IconTabBar> 
      <items> 
        <IconTabFilter showAll="true" count="{/custData/cust/prodcnt}" text="Products" keys="All"> 
         <Table inset="false" items="{ path:'/columnData', sorter: {  path: 'productName', descending: false, group: true } }"> 
          <columns> 
             //column headings definition is here    
          </columns> 
          <items> 
            /// column values defined 
          </items> 
         </Table> 
       </IconTabFilter> 
      </items> 
     </IconTabBar> 
    </Page> 
</Shell> 

В «custdata» у меня есть (как показано) количества продукта (как многие клиенты), а продукты хранятся в custdata/prod (массив). Поэтому я хотел бы создать отдельные значки для вкладок/фильтров для продуктов. Могу ли я добавить их, чтобы они были созданы динамически по мере отображения страницы (поскольку каждый клиент может иметь больше или меньше другого клиента)? Примеры, которые я видел, по-видимому, представляют собой жесткие кодировки возможных вкладок/фильтров, поэтому я не знаю, можно ли делать то, что я хотел бы сделать. Надеюсь, что это действительно поможет мне.

ответ

0

Я думаю, что это должно быть возможно.

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

Вот пример:

var model = new sap.ui.model.json.JSONModel(); 
model.setData(
{ 
    filter: [ 
     { icon: "sap-icon://hint", text: 'hint'}, 
     { icon: "sap-icon://comment", text: 'comment'}, 
     { icon: "sap-icon://attachment", text: 'attachment'}, 
     { icon: "sap-icon://history", text: 'history'}, 
    ] 
}); 

var iconTabBar = new sap.m.IconTabBar("iconTabBar", { 
    expandable: true, 
    expanded :true, 
}); 

iconTabBar.setModel(model, "itbModel"); 
iconTabBar.bindAggregation("items", "itbModel>/filter", new sap.m.IconTabFilter({icon: "{itbModel>icon}", text:"{itbModel>text}"})); 

ли это поможет?

+0

спасибо. Я дам ему попробовать. Могу ли я изменить XML или добавить этот код к контроллеру? Я бы подумал, если я пойму, что делать правильно, после получения моих данных я мог бы добавить ваш код, когда будет инициализирован экран. Мне интересно, добавить ли я ID или если на экране будут какие-либо значки, не все ли они будут изменены? – user3861284

Смежные вопросы