我只想在按下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的值。
有没有办法解决这个问题?
答案 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
的“代理”,并采取行动。
希望它能帮助别人,就像它对我一样。