如何从OData扩展绑定中获取价值

时间:2018-01-09 16:47:07

标签: sapui5

我有一个带有绑定的List。在此列表中,我返回银行账户,在扩展中,我获得了每个账户的授权(1:n)。

<List id="bankAccountList"
    itemPress="onListItemSelect"
    items="{
        path: 'BankvbSet',
        parameters: {
            expand: 'MandatSet'
        }
    }"
    noDataText="{i18n>msgNoBankAccount}"
    delete="onEndBankAccount"
>

现在我将检查是否有任何具有适当状态的任务。所以我为此编写了一个格式化程序,在该格式化程序中,我从$expand获取数据。但我只得到一个有任务路径的数组。有没有办法获得完整的数据?

这是我目前的代码:

<List id="bankAccountList"
    itemPress="onListItemSelect"
    items="{
        path: 'BankvbSet',
        parameters: {
            expand: 'MandatSet'
        }
    }"
    noDataText="{i18n>msgNoBankAccount}"
    delete="onEndBankAccount"
>
    <items>
        <ObjectListItem id="template" 
            custom:bankId="{Bankdetailid}"
            type="Navigation"
            intro="{i18n>labelBankId}: {Bankdetailid}"
            title="{Iban}"
            number="{
                path: 'ValidEntry',
                formatter: '.formatter.setBankAccountStateText'
            }"
            numberState="{
                path: 'ValidEntry',
                formatter: '.formatter.setBankAccountState'
            }"
        >
            <attributes>
                <ObjectAttribute
                    title="{i18n>labelBankName}"
                    text="{Bankdesc}"
                />
                <ObjectAttribute
                    text="{
                        path: 'MandatSet',
                        formatter: '.formatter.setLabelMandateVorhanden'
                    }"
                />
            </attributes>
        </ObjectListItem>
    </items>
</List>

在格式化程序中,我只得到路径为数组

[
    "MandatSet(Application='1',SepaCreditorId='DE98ZZZ0999',SepaMandateId='5001549101000001',Status='4')",
    "MandatSet(Application='1',SepaCreditorId='DE98ZZZ0999',SepaMandateId='5001549101000002',Status='1')",
    "MandatSet(Application='1',SepaCreditorId='DE98ZZZ0999',SepaMandateId='5001549101000003',Status='1')"
]

1 个答案:

答案 0 :(得分:0)

这是在ODataModel中存储导航属性数据的默认行为。 尽管您只获得了密钥,但您可以使用 ODataModel 的“ getProperty ”方法轻松地检索后面的对象。

如果您通过控制器定义格式化程序,则会使用它的上下文调用它。格式化函数内部的含义“ this ”将指向控制器实例。

这意味着您可以获取OData模型实例(在格式化程序内部)并调用“getProperty”传递密钥,这将返回所需的对象。