【问题标题】:Reset ratingInput in shiny app在闪亮的应用程序中重置 ratingInput
【发布时间】:2017-01-27 03:33:44
【问题描述】:

我想将评级输入与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)

【问题讨论】:

  • 在不带括号的控制台输入reset 来查看shinyjs::reset() 的代码。它有一组if 语句,用于查找已知的 Shiny 输入类型,因此它可以正确处理每一个。它不知道您的 ratingInput 函数。如果您编写 updateRatingInput 函数,您似乎可以让它工作。不过,不确定是否设置“类型”属性。
  • 不幸的是,它并不是那么简单 - JavaScript 中还有代码可以检测这是什么类型的输入。我只是看了一下那个评级包,似乎只有少数人在使用它,但如果它变得更受欢迎,我会添加对重置它的支持。在此之前,我建议您编写自己的自定义代码来重置它
  • 好的,我明白了,谢谢!

标签: r shiny shinyjs


【解决方案1】:

您可以手动创建重置操作

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

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

2) 使用extendShinyjs将此js添加到应用程序

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)

  })

})

【讨论】:

    猜你喜欢
    • 2013-07-08
    • 2014-08-07
    • 1970-01-01
    • 2017-11-30
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多