2016-09-19 70 views
1

我想使用輸入與shinyjs::reset()函數結合使用。除了重置功能外,Everthing可以正常工作。任何提示?重置評級輸入閃亮的應用程序

這是我的小例子:

library(shiny) 
devtools::install_github("stefanwilhelm/ShinyRatingInput") 
library(ShinyRatingInput) 
library(shinyjs) 

ui <- shinyUI(bootstrapPage(
    useShinyjs(), 
    ratingInput("movieRating", label="Rate this movie...", dataStop=5), 
    htmlOutput("movieRatingout"), 
    actionButton("resetbtn", "reset") 
)) 

#the corresponding server.R 
server <- shinyServer(function(input, output, session) { 
    output$movieRatingout <- renderText({ 
    paste("The movie was rated ",input$movieRating) 
    }) 

    observeEvent(input$resetbtn, { 
    reset("movieRating") 
    }) 

}) 


shinyApp(ui, server) 
+0

看一看代碼爲'shinyjs ::復位()'通過在控制檯沒有括號裏輸入'reset'。它有一套'if'語句來查找已知的Shiny輸入類型,因此它可以正確處理每個輸入類型。它不知道你的'ratingInput'函數。看起來你可以在編寫'updateRatingInput'函數的時候使它工作。不過,不確定設置'type'屬性。 –

+1

不幸的是,並不是那麼簡單 - JavaScript中還有代碼來檢測這是什麼類型的輸入。我只是看了一下這個評價軟件包,似乎只有少數人使用它,但如果它更受歡迎,我會添加對重置它的支持。在此之前,我建議編寫自己的自定義代碼來重置它 –

+0

好的,我明白了,謝謝! – sammerk

回答

1

您可以創建復位動作manualy

1)添加JS重置圖標(前景的設置寬度== 0)

jsCode <-"shinyjs.reset_1 = function(params){$('.rating-symbol-foreground').css('width', params);}"

2)將此js添加到應用程序使用extendShinyjs

3)添加到session$sendInputMessage復位輸入(設置value == NULL

工作實例

jsCode <-"shinyjs.reset_1 = function(params){$('.rating-symbol-foreground').css('width', params);}" 
ui <- shinyUI(bootstrapPage(
    useShinyjs(), 
    extendShinyjs(text = jsCode), 
    ratingInput("movieRating", label="Rate this movie...", dataStop=5), 
    htmlOutput("movieRatingout"), 
    actionButton("resetbtn", "reset") 
)) 

#the corresponding server.R 
server <- shinyServer(function(input, output, session) { 
    output$movieRatingout <- renderText({ 
    paste("The movie was rated ",input$movieRating) 
    }) 

    observeEvent(input$resetbtn, { 
    session$sendInputMessage("movieRating", list(value = NULL)) 
    js$reset_1(0) 

    }) 

}) 
相關問題