在闪亮的应用程序中重置评级输入

Reset ratingInput in shiny app

我想将评级输入与 shinyjs::reset() 功能结合使用。除重置功能外,一切正常。有什么提示吗?

这是我的最小示例:

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)

您可以手动创建重置操作

1) 添加js重置图标(设置前景宽度==0)

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

2) 使用 extendShinyjs

将此 js 添加到应用程序

3) 添加 session$sendInputMessage 以重置输入 ( set 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)

  })

})