来自对象数组的UI5数据绑定(JS视图)

时间:2018-01-04 10:15:33

标签: javascript data-binding sapui5

我正在尝试将数据绑定到我的表格。

我的数据如下所示:enter image description here

我的守则的相关部分:

来自View:

var innerTable2 = new sap.m.Table(this.createId("innerTable2"), {
        columns: [
            new sap.m.Column({
                header: new sap.m.Label({
                    text: " Header Text"
                })
            }),
            new sap.m.Column({
                header: new sap.m.Label({
                    text: " Header Text 2"
                })
            })
        ]
    }).addStyleClass("table-result");
来自Controller的

// creating path for the property I need
var path_STOFFTYP = "{" + elementId + "/stoff/STOFFTYP}";
var oInnerTemplate2 = new sap.m.ColumnListItem({
    cells: [
        new sap.m.Text({
            text: "test"
        }),
        new sap.m.Text({
            text: path_STOFFTYP
        })
    ]
});
//here binding template to table 
this.byId("innerTable2").setModel(oModel).bindItems("/results/rs999", oInnerTemplate2);

如果我现在离开path_STOFFTYP,我就不会收到任何数据。

如果我只将其设为“stoff”,则显示[object Object]stoff数组的长度一样多。

我所知道的是,“stoff”属性至少包含1个且最多65个不同的元素(取决于所选项目。它的动态)

如果我将var path_STOFFTYP更改为"{" + elementId + "/stoff/0/STOFFTYP}";

显示“Wirkstoff”的值。哪个是正确的,但是我不想创建60个不同的属性。

我的问题:如何设法从数组“stoff”获取属性“STOFFTYP”的所有值?我想动态绑定它。

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解你要做的事情。

但是你的Binding是错误的stoff是结果/ rs999数组中的一个数组。所以它是数组中的数组。

您的模板应该只使用相对绑定

path_STOFFTYP = "{STOFFTYP}";

然后你应该动态地将你的物品绑定到某种这样的路径:

/here binding template to table 
this.byId("innerTable2").setModel(oModel).bindItems("/results/rs999/"+elementId+"/stoff", oInnerTemplate2);