如何在包含控件的sap.uxap.BlockBase上设置`fieldGroupIds`?

问题描述

假设我有一个像sample application这样的SAPUI5应用程序。

在该应用程序的代码中可以看到,视图以某种方式分成几个块,并像这样附加到主视图:

<ObjectPageSubSection title="Payment information">
    <blocks>
            <personal:PersonalBlockPart1 id="part1"/>
    </blocks>
    <moreBlocks>
            <personal:PersonalBlockPart2 id="part2"/>
    </moreBlocks>
</ObjectPageSubSection>

PersonalBlockPart1已被分成两个文件,如下所示:

<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns:core="sap.ui.core" xmlns:forms="sap.ui.layout.form" xmlns="sap.m">

    <forms:SimpleForm editable="false" layout="ColumnLayout">
        <core:Title text="Main Payment Method"/>

        <Label text="Bank Transfer"/>
        <Text text="Sparkasse Heimfeld,Germany"/>

    </forms:SimpleForm>

</mvc:View>
sap.ui.define(['sap/uxap/BlockBase'],function (BlockBase) {
    "use strict";

    var BlockJobInfoPart1 = BlockBase.extend("sap.uxap.sample.SharedBlocks.employment.BlockJobInfoPart1",{
        metadata: {
            views: {
                Collapsed: {
                    viewName: "sap.uxap.sample.SharedBlocks.employment.BlockJobInfoPart1",type: "XML"
                },Expanded: {
                    viewName: "sap.uxap.sample.SharedBlocks.employment.BlockJobInfoPart1",type: "XML"
                }
            }
        }
    });

    return BlockJobInfoPart1;
});

如果我想设置fieldGroupIds的直接方法是在代码的xml片段中进行设置!例如:

<Text text="Sparkasse Heimfeld,Germany" fieldGroupIds="XYZ1"/>

我的问题是如何在父视图中做到这一点:

<blocks>
    <personal:PersonalBlockPart1 id="part1" fieldGroupIds="XYZ1"/>
</blocks>
<moreBlocks>
    <personal:PersonalBlockPart2 id="part2" fieldGroupIds="XYZ2"/>
</moreBlocks>

我尝试过,显然它不适用于儿童控件。但是,我认为有一种解决方案可以从XML主视图读取此属性,并将其应用于所有封闭控件的JS文件中,如下所示:

sap.ui.define(['sap/uxap/BlockBase'],type: "XML"
                }
            }
        },onViewInit: function(){
            // pseudocode
            var sFieldGroupIds = this.getFieldGroupIds();
            var aControls = this.getAllFeidls();
            iterate over aControls and set the sFieldGroupId
        }
    });

    return BlockJobInfoPart1;
});

解决方法

我必须使用try: number = int(input('Enter a number:')) while number != 1: number = collatz(number) except ValueError: print('Enter a valid integer') def collatz(num): if num % 2 == 0: print(str(num // 2)) return num // 2 else: print(str(3 * num + 1)) return (3 * num + 1) 函数:

onBeforeRendering

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...