SAPUI5-如何在表中绑定子列表的正确属性

SAPUI5 - How to bind the correct property of a sublist in a table?

本文关键字:列表 属性 绑定 SAPUI5-      更新时间:2023-09-26

伙计们,我有个问题。

我有一个带有表单的页面,所有数据都可以绑定。但表不行。

我的目标是:

this.getView().getModel('newExpense').setData({
  desiredPaymentDate: new Date(),
  isAdvancedPayment: false,
  expenseItens: [
    {expenseType: 'tipoteste',
      nfnumber: 'nf123456',
      date: new Date(),
      value: '1345.43'
    },
    {expenseType: 'tipoteste2', nfnumber: 'nf123453'},
    {expenseType: 'tipoteste3', nfnumber: 'nf123454'}
    ]
});

所以在我的表单中,一切都很好,头字段(desiredPaymentDate和isAdvancedPayment),但我正试图将我的iten绑定在这样的表中:

    oExpenseItensTable.bindItems('newExpense>/expenseItens',
        new sap.m.ColumnListItem({
            cells: [
                new sap.m.Input({
                    value: '{expenseItens>/expenseType}',
                    type: 'Text'
                }),
                new sap.m.Input({
                    value: '{>/nfnumber}',
                    type: 'Text'
                }),
                new sap.m.Input({
                    value: '{/expenseItens>/date}',
                    type: 'Text'
                }),
                new sap.m.Input({
                    value: '{/expenseItens/value}',
                    type: 'Text'
                }),
                new sap.m.Button({
                    icon: 'sap-icon://delete',
                    tooltip: 'Remover item de despesa',
                    press: oController.removeExpenseItem
                })
            ]
        })
    );

我就快到了。。。我正在尝试各种类型的字段绑定。。。我尝试过{nfnumber}、{/nfnumber}、{>/nfnumber}、{expenseTens>/nfnnumber},{/expenseTens>nfnumber}、{nfnumber}。但什么都不管用。。。

PS:由于我在expenseTens集合中有三个对象,所以表上有三个空行,但所有值都是空的。因此,我认为绑定用于识别数组,但不用于对象的属性绑定。

有人知道正确的模式是什么吗?

我认为您的代码应该是这样的oExpenseItensTable.bindItems('newExpense>/expenseTens',

    new sap.m.ColumnListItem({
        cells: [
            new sap.m.Input({
                value: '{newExpense>expenseType}',
                type: 'Text'
            }),
            new sap.m.Input({
                value: '{newExpense>nfnumber}',
                type: 'Text'
            }),
            new sap.m.Input({
                value: '{newExpense>date}',
                type: 'Text'
            }),
            new sap.m.Input({
                value: '{newExpense>value}',
                type: 'Text'
            }),
            new sap.m.Button({
                icon: 'sap-icon://delete',
                tooltip: 'Remover item de despesa',
                press: oController.removeExpenseItem
            })
        ]
    })
);

您应该使用{newExpense>nfNumber},而不使用前面的斜杠。因为绑定的表项在expenseItems中,所以子属性应该绑定到此节点的相对,即不带斜线。