如何在R中重置闪亮的actionButton?

时间:2017-02-10 13:31:36

标签: r action-button

我只想在按下actionButton一次时执行if语句一次。所以,我想重置actionButton,因为if语句是连续执行的。 T.T

这是我的代码。

      output$action_btn <- renderUI({
        actionButton("act_btn", class="btn-primary", "active")
      })

      output$test <- renderPlot({
        if(input$act_btn!= 0){
         (execution code..)
        }
      })

      input$act_btn <- 0  #This is Error.

当我按下actionButton时,效果很好。

问题是input$act_btn <- 0。我想重置act_btn的值。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

有点晚了,但我刚刚完成了这个过程,发现this blog post from Antoine Guillot非常有用。

本质上,他在JS客户端创建了一个代理变量,它总是在按钮点击时更新。然后在您的r代码中,您将观察代理变量并继续逻辑,就像您已将按钮状态重置为0一样。

tags$script("$(document).on('click', '#Main_table button', function () {
 Shiny.onInputChange('lastClickId',this.id);
 Shiny.onInputChange('lastClick', Math.random())
});")

在此代码中,包含#Main_table的闪亮输出button中的任何点击事件都会触发onClick事件。然后使用闪亮的js命令创建一个新的input变量,该变量现在包含单击按钮的id。

你会注意到

Shiny.onInputChange('lastClick', Math.random())

这是您用于observeEvent的“代理”,并采取行动。

第f节。这里http://enhancedatascience.com/2017/03/01/three-r-shiny-tricks-to-make-your-shiny-app-shines-33-buttons-to-delete-edit-and-compare-datatable-rows/

希望它能帮助别人,就像它对我一样。