Sapui5 如何在radiobutton上绑定数据

Sapui5 如何在radiobutton上绑定数据,sapui5,Sapui5,我有一个带有单选按钮的xml视图,必须将数据绑定到模型 我正在使用openui5-runtime-1.22.4 我有以下控制器,它添加了绑定模型和两个按钮(重置、警报)的句柄: 在视图的xml中,有一个名称字段和一些性别单选按钮: <mvc:View height="100%" controllerName="myapp.FORM" xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns:

我有一个带有单选按钮的xml视图,必须将数据绑定到模型

我正在使用openui5-runtime-1.22.4

我有以下控制器,它添加了绑定模型和两个按钮(重置、警报)的句柄:

在视图的xml中,有一个名称字段和一些性别单选按钮:

<mvc:View
    height="100%"
    controllerName="myapp.FORM"
    xmlns:core="sap.ui.core"
    xmlns:mvc="sap.ui.core.mvc"
    xmlns:f="sap.ui.layout.form"
    xmlns="sap.m"
    xmlns:html="http://www.w3.org/1999/xhtml"
>
    <Page title="My APP" class="marginBoxContent">
        <content>
            <f:SimpleForm
                minWidth="320" maxContainerCols="2"
                editable="true" layout="ResponsiveGridLayout"
                labelSpanL="3" labelSpanM="3"
                emptySpanL="2" emptySpanM="0"
                columnsL="1" columnsM="1"
            >
                <f:content>
                    <Label text="Name" />
                    <Input type="Text" value="{mydata>/name}" />

                    <Label text="Gender 1" />
                    <HBox binding="{mydata>/gender1}">
                        <RadioButton id="gender1_male" groupName="groupGender1" text="male" />
                        <RadioButton id="gender1_male" groupName="groupGender1" text="female" />
                    </HBox>

                    <Label text="Gender 2" />
                    <RadioButton id="gender2_male" groupName="groupGender2" text="male" value="{mydata>/gender2}" />
                    <RadioButton id="gender2_male" groupName="groupGender2" text="female" value="{mydata>/gender2}" />
                </f:content>
            </f:SimpleForm>

            <Bar>
                <contentMiddle>
                    <Button icon="sap-icon://undo" text="Undo" press="resetData" />
                </contentMiddle>
                <contentRight>
                    <Button icon="sap-icon://action" text="Alert" press="alertData" />
                </contentRight>
            </Bar>

        </content>
    </Page>
</mvc:View>
如何将模型的属性绑定到单选按钮组

谢谢你的回答

编辑1:

在我的情况下,使用格式化程序不起作用。唯一改变的是,radiobutton旁边的标签从男性改为false

XML视图:

<RadioButton groupName="groupGender1" text="{path : 'male',formatter:'maleFormatter'}" />
注意,只有当include脚本中的绑定语法设置为complex时,才会解析taxt属性的复数值

<script id='sap-ui-bootstrap' type='text/javascript' src='resources/sap-ui-core-dbg.js'
    data-sap-ui-xx-bindingSyntax="complex" data-sap-ui-theme='sap_bluecrystal' data-sap-ui-libs='sap.m, sap.ui.layout'></script>
是否有更好的解决方案将radiobutton的数据绑定到模型


因此,最初的问题,如何在radiobutton上绑定数据,仍然是一个悬而未决的问题。

radiobutton没有值,但您可以根据性别绑定所选属性,
使用格式化程序。例如:
maleFormatter=function(gender){return gender==“male”}
我来这里寻找答案,但后来发现了这个

您需要像这样绑定到选定的属性

<RadioButton id="rbid" text="Radio Button Text" selected="{path:'BooleanValue', formatter:'fnBooleanFormatter'}"/>


我把它绑在一个按钮上,小组中的其他按钮按照这条线索。对于两个以上的按钮,您可以使用多个格式化程序来确保选择了一个值。

如何在xml视图中为单选按钮定义格式化程序?请参见主要问题中的编辑1。感谢您的回复。我已将index.html的include脚本中的绑定语法设置为complex
data sap ui xx bindingSyntax=“complex”
,因此使用了格式化程序。但是格式化程序只处理单选按钮旁边文本的初始输出。因此,文本为false而不是male^^^^问题的解决方案是在控制器的alertData方法中检查所选状态(请参见编辑2)。如果有其他更干净的解决方案,请随时告诉我。谢谢
maleFormatter = function(gender) { alert(this.getId() + ' : ' + gender); return gender == "male"; };
<script id='sap-ui-bootstrap' type='text/javascript' src='resources/sap-ui-core-dbg.js'
    data-sap-ui-xx-bindingSyntax="complex" data-sap-ui-theme='sap_bluecrystal' data-sap-ui-libs='sap.m, sap.ui.layout'></script>
getUserData : function() {
    var oUserModel = this.getView().getModel("mydata"),
    oUserData = oUserModel.getData();
    // check gender! for radios there is no databinding feature
    oUserData.gender = this.byId("gender1_male").getSelected() ? 'm' : 'w';
    oUserModel.setData(oUserData);
    return oUserModel.getData();
},
alertData : function(event) {
    var oUserData = this.getUserData();
    var aTest = [];
    jQuery.each(oUserData, function (index, value) {
        aTest.push(index + ' : ' + value);
    });
    alert(aTest.join('\n'));
}
<RadioButton id="rbid" text="Radio Button Text" selected="{path:'BooleanValue', formatter:'fnBooleanFormatter'}"/>