Javascript 如何在openui5中调用/重新渲染按钮

Javascript 如何在openui5中调用/重新渲染按钮,javascript,jquery,html,sapui5,Javascript,Jquery,Html,Sapui5,我使用下面的openui5切换按钮,按下时为蓝色,按下时为真,按下时为灰色。但是按钮的值会在某个时间点发生变化。是否可以显式调用按钮来重新渲染它 var oToggleButton1 = new sap.ui.commons.ToggleButton({ text : "Auto-Update", tooltip : "Update toggle.

我使用下面的openui5切换按钮,按下时为蓝色,按下时为真,按下时为灰色。但是按钮的值会在某个时间点发生变化。是否可以显式调用按钮来重新渲染它

 var   oToggleButton1 = new sap.ui.commons.ToggleButton({
                                    text : "Auto-Update",
                                    tooltip : "Update toggle.",
                                    pressed : true,
                                    press : function() {

                                        if(oToggleButton1.getPressed() == true){
                                            buttonStatus = "ON";
                                        }
                                        else{
                                            buttonStatus = "OFF";
                                        }                                                           
                                        var oDialog1 = new sap.ui.commons.Dialog();
                                        oDialog1.setTitle("Alert!");    
                                        //alert('Auto update is turned '+buttonStatus);
                                        oDialog1.addContent(new sap.ui.commons.TextView({text: "Auto update is turned "+buttonStatus}));
                                        //oDialog1.addButton(new sap.ui.commons.Button({text: "OK", press:function(){oDialog1.close();}}));
                                        oDialog1.open();
                                        oDialog1.close();
                                        refreshButtonDisplay=oToggleButton1.getPressed();
                                    },
                                    layoutData: new sap.ui.layout.GridData({span: "L12 M12 S12"}),
                                  }),

最好将ToggleButton的pressed属性绑定到模型中的一个属性,并让UI5的绑定魔法处理所有这些。如果UI5看到模型中的属性发生了更改,它将检查该属性的绑定,以查看是否有任何UI控件因此需要更新。如果已将ToggleButton绑定到该属性,UI5将更新/重新启用ToggleButton


您还可以直接从控制器更改ToggleButton的“pressed”属性,例如:oToggleButton1。setPressed(false)也可以做到这一点。

最好将ToggleButton的pressed属性绑定到模型中的属性,并让UI5的绑定魔法处理所有这些。如果UI5看到模型中的属性发生了更改,它将检查该属性的绑定,以查看是否有任何UI控件因此需要更新。如果已将ToggleButton绑定到该属性,UI5将更新/重新启用ToggleButton


您也可以直接从控制器中更改ToggleButton的“pressed”属性,例如:oToggleButton1。setPressed(false)也可以做到这一点。

我不太理解您想要实现的目标,也许您可以再详细说明一下,即什么值在何时更改?无论如何杰彭宁霍夫所说的一切都是绝对正确的。但是,由于您明确询问如何重新启动按钮,以下是答案:

oToggleButton1.rerender();
这将重新启动按钮(当然基于其属性…)

但是,

oToggleButton1.setPressed(false);


如果pressed属性的值发生变化,将自动重新启动按钮。

我不太明白您想要实现什么,也许您可以再详细说明一下,即什么值发生变化以及什么时候发生变化?无论如何杰彭宁霍夫所说的一切都是绝对正确的。但是,由于您明确询问如何重新启动按钮,以下是答案:

oToggleButton1.rerender();
这将重新启动按钮(当然基于其属性…)

但是,

oToggleButton1.setPressed(false);


如果pressed属性的值发生更改,将自动重新启动按钮。

我已经尝试过绑定pressed:flag,其中flag是在主选项卡视图中默认声明为true的变量,并调用相同的变量,即otogleButton1.set visible(true)在onAfterRendering中,分别在所有选项卡控制器中进行渲染。但问题是,当逻辑正常工作时,但在切换选项卡时,自动更新按钮不会更改其颜色假设我已在另一个选项卡中将其设置为关闭,除非我再次关闭并重新打开它。我已将您的代码放入jsbin:。您可以看到,我可以使用外部事件(本例中为计时器)完美地关闭和再次打开按钮。如果这不是您想要的,或者如果有任何其他代码可能会干扰,您可能需要详细说明一下(请用易懂的英语,加上适当的标点符号)。我已经尝试过绑定pressed:flag,其中flag是一个变量,默认情况下在我的主选项卡视图中声明为true,并调用相同的变量,即otogleButton1.set visible(true)在onAfterRendering中,分别在所有选项卡控制器中进行渲染。但问题是,当逻辑正常工作时,但在切换选项卡时,自动更新按钮不会更改其颜色假设我已在另一个选项卡中将其设置为关闭,除非我再次关闭并重新打开它。我已将您的代码放入jsbin:。您可以看到,我可以使用外部事件(本例中为计时器)完美地关闭和再次打开按钮。如果这不是您想要的,或者如果有任何其他代码可能会干扰,您可能需要详细说明一下(请用易懂的英语,加上适当的标点符号)。