返回控件数组作为SAP UI5中的聚合

时间:2019-05-24 13:59:17

标签: javascript forms sapui5 aggregation

我有一个用例,我想在sap.m.Input中添加两个FormElement控件。但是我在某些条件下可以更改这两个Input控件。正如我在许多示例中看​​到的那样,.bindAggregation方法仅返回一个控件。我可以让它返回控件数组吗?

var oInput1 = new sap.m.Input();
var oInput2 = new sap.m.Input();
var oInput3 = new sap.m.Input();

var oFormElement = new sap.ui.layout.form.FormElement();
oFormElement.bindAggregation("fields", "properties", function(sId, oContext){
    var value = oContext.getProperty("value");
    if (value > 5) {
        return [oInput1, oInput3];
    } else {
        return [oInput1, oInput2];
    }
});

我已经写了这个样本,但是什么也没显示。如何返回.bindAggregation中的控件数组。我试图在字段中使用HBox,但是有引起布局问题的风险。有人可以帮忙吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

您不能在工厂函数中返回多个元素。将为每个上下文调用factory函数,并且必须恰好返回一个元素。

如果您不能修改服务以为每个输入返回一个上下文,则可以考虑使用JavaScript构造表单,而不是使用数据绑定。这意味着

  1. 从您的服务中请求properties
  2. 遍历每个属性,并使用FormElement.addField方法将输入添加到表单元素。