SAPUi5单选按钮选中的文本

时间:2018-09-11 22:53:20

标签: javascript sapui5

我的XMLview中有一个单选按钮,如下所示。数据是从模型绑定的。我的要求是在数据绑定之后验证单选按钮。下面是我的控制器代码。我正在尝试在控制器的AfterRendering方法中读取selectedButton文本的值。

XML视图:

<RadioButtonGroup id="rbgtype" > 
<RadioButton text="Yes" selected="{/rbgtype}"/> 
<RadioButton text="No" selected="{=!${/rbgtype}}"/> </RadioButtonGroup>

控制器

onAfterRendering: function () { 
var that = this; console.log("rbgtype"+that.getView().byId("rbgtype").getSelectedButton().getText());} 

奇怪的是,无论选择哪个值,我总是得到“ Yes”值。有人可以建议我在哪里做错了。

2 个答案:

答案 0 :(得分:4)

之所以这样做,是因为RadioButtonGroup最初没有设置属性selectedIndex。每当未设置getSelectedButton时,似乎无法通过selectedIndex方法。

也许您可以像这样解决此问题?希望这会有所帮助。

查看

        <RadioButtonGroup id="rbgtype" selectedIndex ="{/rbgtype}">
            <RadioButton text="Yes" />
            <RadioButton text="No"/>
        </RadioButtonGroup>

控制器

        onInit: function() {
        var type = false;
        var oModel = new JSONModel({
            rbgtype: type ? 0 : 1
        });

        this.getView().setModel(oModel);
    },

    onAfterRendering: function() {
        sap.m.MessageToast.show("rbgtype: " + this.byId("rbgtype").getSelectedButton().getText());
    },

查看2

<RadioButtonGroup id="rbgtype" selectedIndex ="{= ${rbgtype} ? 0 : 1 }">
            <RadioButton text="Yes" />
            <RadioButton text="No"/>
</RadioButtonGroup>

答案 1 :(得分:1)

请检查您的xml视图radionbuttongroup聚合和绑定

<RadioButtonGroup id="rbgtype" >
                <buttons>


<RadioButton text="Yes" selected="{/rbgtype}"/> 
<RadioButton text="No" selected="{=!${/rbgtype}}"/> </RadioButtonGroup>
                </buttons>
            </RadioButtonGroup>

修复后,您可以在控制器的onInit函数中为onAfterRendering添加事件委托

请参见下面的示例

var rbGrp= this.getView().byId("rbgtype");

rbGrp.addEventDelegate({

onAfterRendering:function(){/*write your code here*/}                                                        

      }, this);

希望这会有所帮助。任何问题都让我知道