2014-10-03 24 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 2014-10-06 20:10:44