openui5:如何在 RowRepeater 中获取当前的 JSON 模型元素 [英] openui5: How to get current JSON model element in RowRepeater
问题描述
我无法获取当前绑定到 RowRepeater 元素的 JSON 模型元素.对于表格和列表,我只需检索当前索引(或多个索引),并根据这些值指向 JSON 模型中的匹配元素.
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.
但是,RowRepeater 元素没有当前索引属性.我觉得我应该能够直接检索当前元素,而不是通过当前索引间接检索,是否有更好、更统一的方法来检索当前元素?
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?
模型示例代码:
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);
RowRepeater 的示例代码(我想在按下删除图标时检索当前的键"):
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);
推荐答案
以下对我有用
icon.attachPress(function(oEvent) {
sap.ui.commons.MessageBox.alert(this.getBindingContext().getProperty('name'));
});
所选对象
var seletedRow = this.getBindingContext().getObject()
这篇关于openui5:如何在 RowRepeater 中获取当前的 JSON 模型元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!