我的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”值。有人可以建议我在哪里做错了。
答案 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);
希望这会有所帮助。任何问题都让我知道