3

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

这是我的代码。

      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 的值。

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

4

1 回答 1

3

有点晚了,但我最近刚刚经历了这个过程,发现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中包含 a的任何单击事件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 -行/

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

于 2017-10-14T16:47:11.583 回答