2017-02-10 32 views
0

我想只按一次actionButton就執行if語句一次。所以,我想重置actionButton,因爲if語句是連續執行的。 T.T如何在R中重置shinyButton?

這是我的代碼。

 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

https://github.com/rstudio/shiny/issues/167幫助。 – BigDataScientist

+0

感謝您的回覆。 我會試試! –

回答

1

有點晚了,但我剛剛經歷了這個過程,最近發現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()) 
});") 

在這段代碼,任何click事件中包含button閃亮的輸出#Main_table會觸發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/

希望它可以幫助別人,就像它一樣。

+0

謝謝你的回覆。 –