Javascript 如何动态创建分段ButtonItems

Javascript 如何动态创建分段ButtonItems,javascript,sapui5,Javascript,Sapui5,我有一个需求,需要根据响应中的项目数量动态创建SegmentedButtonItem 视图:我的xml视图中分段按钮的代码: <HBox id="buttonchoice" alignItems="Center" justifyContent="Center" width="100%"> <SegmentedButton select="setInitialChoices" id="paymentMethodSelection"> <items&

我有一个需求,需要根据响应中的项目数量动态创建SegmentedButtonItem

视图:我的xml视图中分段按钮的代码:

<HBox id="buttonchoice" alignItems="Center" justifyContent="Center" width="100%">
   <SegmentedButton select="setInitialChoices" id="paymentMethodSelection">
       <items>
           <SegmentedButtonItem id="55" text="Cloud Offering" width="200px"/>
           <SegmentedButtonItem id="56" text="BIT"/>
           <SegmentedButtonItem id="57" text="Others" width="100px" press="_segmentButtonSelected"/>                                            
       </items>
   </SegmentedButton>
</HBox>

控制器代码:

success: function(data, textStatus, jqXHR) {
    var that = this;
    if (data.length !== 0) {
        if (data.questions["0"].id === 54) {
            var oInput1 = new sap.m.Text('input1');
            //.questions["0"].question
            oInput1.setText(data.questions["0"].question);
            oInput1.setTooltip("This is a tooltip ");
            var oLayout = this.getView().byId("testform");
            oLayout.addContent(oInput1);
            var oSegBtn = new sap.m.SegmentedButton();
            //var oSegBtn = new sap.m.SegmentedButton();
            for (var i = 0; i < data.length; i++) {
                oSegBtn = ({
                    items: [
                        new sap.m.SegmentedButtonItem(i, {
                            text: "Navigation Off",
                            press: [that.handleButtonPress, this]
                        })
                    ]
                    //  press: [that.handleButtonPress, that]
                });
                //  oSegBtn 
            }
            var oLayout1 = this.getView().byId("choiceQs");
            oLayout1.addContent(oSegBtn);
        }
    }
}
success:函数(数据、文本状态、jqXHR){
var=这个;
如果(data.length!==0){
如果(数据问题[“0”].id==54){
var oInput1=新的sap.m.Text('input1');
//.问题[“0”].问题
oInput1.setText(data.questions[“0”].question);
oInput1.setTooltip(“这是一个工具提示”);
var oLayout=this.getView().byId(“testform”);
oLayout.addContent(oInput1);
var oSegBtn=新sap.m.SegmentedButton();
//var oSegBtn=新sap.m.SegmentedButton();
对于(变量i=0;i
问题:

上面的代码只创建一个按钮并添加到内容中,其中data.length为3,理想情况下,我需要创建3个按钮并添加到视图中的内容中


请您建议。

您必须更改循环的代码。只需在循环中创建SegmentedButtonItem并调用SegmentedButton的
addItem

var oSegBtn = new sap.m.SegmentedButton();
for (var i = 0; i < data.length; i++) {
    var oSegmentButtonItem = 
            new sap.m.SegmentedButtonItem({
                text: "Navigation Off",
                press: [that.handleButtonPress, this]
            })
        ;
    oSegBtn.addItem(oSegmentButtonItem);
}
var oSegBtn=new sap.m.SegmentedButton();
对于(变量i=0;i
请参见正在运行的示例


//定义新的(简单的)控制器类型
sap.ui.controller(“my.own.controller”{
//在控制器中实现事件处理程序
onInit:function(){
var-aMockData=[“第1项”、“第2项”、“第3项”];
var=这个;
var oSegBtn=新sap.m.SegmentedButton();
对于(var i=0;i
您需要在循环的外部范围内定义按钮数组,因此在循环中,您将使用SegmentedButtonItem填充此数组,并在结束时遍历创建的数组并调用“addContent”。嘿,感谢您的解决方案,如何检查按钮是否已可用不要创建或删除当前按钮并创建新按钮,因为这也会一次又一次地创建导航