我是SAPUI5 / OpenUI5的新手,编写了一个实验性的小项目,我想在其中为长度可变的列表的每个项目创建一个按钮。

这些按钮必须指向同一事件,但是甚至必须知道通过参数,元素或类似方式按下了哪个按钮。

我在文档的任何地方都找不到如何在基于列表的视图中显示按钮的信息。我找不到一种在运行时在<FlexBox>元素中创建它们的方法。

有什么灯饰或链接可以帮助我吗?

最佳答案

这是可行的。

//this is a common btn click handler
var btnHandler = function(evt) {
  var obtn = evt.getSource();
  //now you have access to the respective button
  var customData = obtn.getCustomData()[0].getValue();
  sap.m.MessageToast.show("button Clicked:" + customData)
};

var oFlexBox = new sap.m.FlexBox();

for (var i = 0; i < 5; i++) {
  var btn = new sap.m.Button({
    text: "Button" + i,
    press: btnHandler,
    //add your custom data here.. this is an aggregation which means you can add as many customDatas as required.
    customData: new sap.ui.core.CustomData({
      key: "key",
      value: i
    })
  });
  oFlexBox.addItem(btn);
}

oFlexBox.placeAt('content');


Working JSFiddle here

09-25 10:19