2015-04-28 42 views
0

我需要構建一個由2列組成的表格 - 第一個是名稱,第二個是如果該人員已被批准。根據文本值設置圖標

這裏是JSON我從服務器獲取:

{"records":[ 
{"approved":"Yes","name":"Doe John"}, 
{"approved":"No","name":"Doe Jane"}]} 

我用上面的JSON到模型設置表。

我需要在第二列中顯示圖標,具體取決於「已批准」鍵的值:sap.ui.core.IconPool.getIconURI("accept")(如果已批准)和sap.ui.core.IconPool.getIconURI("decline")(否則)。

這裏是我試圖定義錶行:

var oModel = new sap.ui.model.json.JSONModel(); 
oModel.setData(data); //the above JSON response 
oTable = sap.ui.getCore().byId("tableId"); 
oTable.setModel(oModel); 
oTable.bindItems({ 
    path: "/records", 
    template: new sap.m.ColumnListItem({ 
     cells : [ 
     new sap.m.Text({text: "{name}"}), 
     new sap.ui.core.Icon({ //my problem starts here 
      path: "approved", 
      formatter: function(approved){ 
       if (approved==="Yes"){return new sap.ui.core.IconPool.getIconURI("accept");} 
       else{return new sap.ui.core.IconPool.getIconURI("decline");}; 
      } 
     }), 
     ] 
    }) 
}); 

我無法正確定義圖標列。上面的代碼顯示了我在搜索答案一段時間後試圖做的事情。

我該如何讓它工作?

回答

2

差不多好了:-)你忘了包括哪些領域要應用格式化(在這種情況下,src

變化

new sap.ui.core.Icon({ 
     path: "approved", 
     formatter: function(approved){ 
      if (approved==="Yes"){return new sap.ui.core.IconPool.getIconURI("accept");} 
      else{return new sap.ui.core.IconPool.getIconURI("decline");}; 
     } 
    }), 

new sap.ui.core.Icon({ 
     src : { 
      path: "approved", 
      formatter: function(approved){ 
       if (approved==="Yes"){return new sap.ui.core.IconPool.getIconURI("accept");} 
       else{return new sap.ui.core.IconPool.getIconURI("decline");}; 
      } 
     } 
    }), 
+0

如果我返回格式化程序'new sap.ui.core.IconPool.getIconURI(「accept」)',我得到'Uncaught TypeError:s.indexOf不是函數錯誤。相反,我做了「返回」sap-icon://接受「;',它的工作完美。謝謝! – keshet