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

时间:2014-10-04 16:55:01

标签: javascript sapui5

伙计我有问题。

我有一个带有表单的页面,所有数据都绑定好了。但不是表格。

我的目标是:

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)但我正试图将我的itens绑定在这样的表中:

    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},{expenseItens> / nfnumber} ,{/ expenseItens> nfnumber},{Nfnumber}。但没有任何作用......

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

任何人都知道正确的模式是怎样的?

2 个答案:

答案 0 :(得分:0)

您应该使用{newExpense>nfNumber},而不使用前面的斜杠。 由于绑定表项位于expenseItems中,因此子属性应该 relative 绑定到此节点,即没有斜杠。

答案 1 :(得分:0)

我相信你的代码应该是这样的     oExpenseItensTable.bindItems( 'newExpense> / expenseItens',

    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
            })
        ]
    })
);