如何在包含控件的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;
});

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)