Pertanyaan openui5: Cara mendapatkan elemen model JSON saat ini di RowRepeater


Saya kesulitan mendapatkan elemen model JSON saat ini yang terikat ke elemen RowRepeater. Dengan tabel dan daftar, saya hanya akan mengambil indeks saat ini (atau indeks) dan berdasarkan nilai-nilai ini, saya menunjuk ke elemen yang cocok dalam model JSON saya.

Namun, elemen RowRepeater tidak memiliki properti indeks saat ini. Karena saya merasa saya harus dapat mengambil elemen saat ini secara langsung, sebagai lawan secara tidak langsung oleh indeks saat ini, apakah ada cara yang lebih baik dan seragam untuk mengambil elemen saat ini?

Kode contoh untuk 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);

Contoh kode untuk RowRepeater (saya ingin mengambil 'kunci' saat menekan ikon hapus):

    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);

4
2018-02-06 09:58


asal


Jawaban:


karya berikut ini untuk saya

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

objek yang dipilih

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

10
2018-02-06 10:28