openui5: How to get current JSON model element in RowRepeater

sapui5

Solution

the following works for me

icon.attachPress(function(oEvent) {
    sap.ui.commons.MessageBox.alert(this.getBindingContext().getProperty('name'));
});

the selected object

var seletedRow = this.getBindingContext().getObject()

Problem

I'm having trouble getting the current JSON model element which is bound to a RowRepeater element. With tables and lists, I would simply retrieve the current index (or indices) and based on these values, I point to the matching element in my JSON model. However, the RowRepeater element does not have a current index property. As I feel I should be able to retrieve the current element directly, as opposed to indirectly by the current index, is there a better, uniform way to retrieve the current element? Sample code for model : ``` var mydata = { "data": [ { "key": "67b895bf-8d89-11e3-94a7-0000005341de", "name": "my 1st item" }, { "key": "7780de05-8d83-11e3-bec4-0000005341de", "name": "my 2nd item" } ] }; var oModel = new sap.ui.model.json.JSONModel(); oModel.setData(dummydata); sap.ui.getCore().setModel(oModel); ``` Sample code for RowRepeater (I want to retrieve the current 'key' upon pressing the delete icon): ``` var oRowRepeater = new sap.ui.commons.RowRepeater(); //create the template control that will be repeated and will display the data var oRowTemplate = new sap.ui.commons.layout.MatrixLayout(); var matrixRow, matrixCell, control; // main row matrixRow = new sap.ui.commons.layout.MatrixLayoutRow(); //Text control = new sap.ui.commons.TextView(); control.bindProperty("text","name"); //add content to cell, cell to row matrixCell = new sap.ui.commons.layout.MatrixLayoutCell(); matrixCell.addContent(control); matrixRow.addCell(matrixCell); //delete icon var icon = new sap.ui.core.Icon({ src: sap.ui.core.IconPool.getIconURI("delete"), size: "16px", color: "#333", activeColor: "#BBB", hoverColor: "#888", width: "60px", }); icon.attachPress(function(oEvent) { sap.ui.commons.MessageBox.alert("TODO: Implement delete based on current/data/?/key"); }); //add content to cell, cell to row matrixCell = new sap.ui.commons.layout.MatrixLayoutCell({ hAlign : sap.ui.commons.layout.HAlign.Right }); matrixCell.addContent(icon); matrixRow.addCell(matrixCell); // add row to matrix oRowTemplate.addRow(matrixRow); //attach data to the RowRepeater oRowRepeater.bindRows("/data", oRowTemplate); ```

Original source