R shiny app:shinyanimate::startAnim()inside module not working

f45qwnt8  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(115)

我是 shinyanimate 包的新手。它在模块外工作得很好,但是在模块内 * 它不工作(但是没有错误也没有警告)。我很确定它与session和ns()有关,但是我不能指出问题所在。
这是我的最小示例,有两个按钮:“button”位于应用程序中,“button_mod”位于模块中。

if (interactive()) {
  mod_test_ui <- function(id){
    ns <- NS(id)
    tagList(actionButton(ns("button_mod"), label = "button_mod"))
  }

  mod_test_server <- function(id){
    moduleServer( id, function(input, output, session){
      ns <- session$ns
      observeEvent(input$button_mod,{
        shinyanimate::startAnim(session, id='button_mod', 'bounce')
      })
      })
  }
  shinyApp(
    ui = basicPage(
      shinyanimate::withAnim(),
      mod_test_ui("test"),
      actionButton("button", label = "button")
    ),
    server = function(input, output, session) {
      mod_test_server("test")
      observeEvent(input$button,{
        shinyanimate::startAnim(session, id='button', 'bounce')
      })
    }
  )
}

字符串
我已经尝试将“session”传递给模块。
我希望这两个按钮有相同的行为和快乐的反弹时,点击…任何人都有一个建议?谢谢

63lcw9qa

63lcw9qa1#

好吧,没关系,我刚刚有一个顿悟。startAnim在一个模块中需要一个像“mymodulename-myid”这样的id,而不仅仅是“myid”。将“button_mod”按钮的id改为“test-button_mod”就可以了。
新的mod_test_server的最小示例:

mod_test_server <- function(id){
    moduleServer( id, function(input, output, session){
    ns <- session$ns
    observeEvent(input$button_mod,{
    shinyanimate::startAnim(session, id='test-button_mod', 'bounce')
  })
  })}

字符串
不管怎样..

相关问题