2015-04-28 45 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