SAPUI5表上的bindRows

时间:2015-06-02 07:26:34

标签: javascript sapui5

我有一个创建表

的JSON视图
{
  "Type": "sap.ui.core.mvc.JSONView",
  "content": [
    {
      "Type": "sap.ui.table.Table",
      "id": "operationTable",
      "columns": [
        {
          "Type": "sap.ui.table.Column",
          "label": "Operation Name",
          "template": {
            "Type": "sap.ui.commons.TextView",
            "text": "{name}"
          }
        }
      ]
    }
  ]
}  

现在,我正在尝试使用JSON模型将Rows绑定到表:

{
  binding: {
    operationX: 
    {
      name: "First Object"
    },
    operationY: {
      name: "Second Object"
    }
  }
}

我想将操作名称绑定到Tablerows。这就是我试图实现目标的方式:

var oModel = new sap.ui.model.json.JSONModel();
oModel.setData(jsonModel);  //The Json-Model one code block above

var oTable = oView.byId("operationTable");
oTable.setModel(oModel);
oTable.bindRows("/binding/"); //This is the problem

问题是绑定不是一个对象数组,而是一个带对象的对象。我无法像写作时那样访问特定的KEY-VALUE-Pair

oTable.bindRows("/binding/operationX");  

/ binding / {secondPart} 的第二部分必须是可更改的。
我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

列表绑定需要一个Array作为底层数据结构(至少在我必须使用的1.26版本中)。试试这个example

答案 1 :(得分:1)

所以,好像你无法绑定这个JSON:

{
  binding: {
    operationX: 
    {
      name: "First Object"
    },
    operationY: {
      name: "Second Object"
    }
  }
}

所以你必须将它解析为JSON-Array,如下所示:

function parseToArray(obj){
    var myArray = new Array();

    for(var key in obj){
        myArray.push(obj[key]);
    }

    return myArray;
}

不幸的是,您无法将 sap.ui.core.ListItem 绑定到表,就像使用DropDownBox

一样