簡體   English   中英

在 Shiny 使用模塊時點擊事件不起作用

[英]In Shiny click event is not working when using modules

為什么當我使用模塊時,我的高圖樹圖中的可點擊功能不起作用。

我在沒有模塊的情況下嘗試了這個並且效果很好。

大概是沒有命名空間相關的東西吧,不過我找不到它是什么東西了。

有什么幫助嗎?

這是我的代碼:

library(shiny)
library(highcharter)
library(gapminder)
library(shinyjs)

source(file = 'module_ex_2.R')


ui <- fluidPage(

  mod_ex2_UI('ex1')

)

server <- function(input, output){
  mod_ex2_Server('ex1')

}

shinyApp(ui, server)

我的模塊文件:

mod_ex2_UI <- function(id) {
  ns <- NS(id)
  tagList(

    highchartOutput(ns("hcontainer")),
    htmlOutput(ns("clicked"))

  )
}

mod_ex2_Server <- function(id) {
  moduleServer(
    id,
    function(input, output, session) {

      click_js <- JS("function(event) {Shiny.onInputChange('treemapclick', event.point.name);}")

      output$hcontainer <- renderHighchart({

        gapminder::gapminder %>%
          dplyr::filter(year  == 2007) %>%
          highcharter::data_to_hierarchical(group_vars = c(continent, country), size_var = pop) %>%
          hchart(type = "treemap") %>%
          hc_plotOptions(treemap = list(events = list(click = click_js)))

      })


      output$clicked <- renderUI({
        if(is.null(input$treemapclick)){
          reactable::reactable(data =gapminder::gapminder %>%
                                 dplyr::filter(year  == 2007) %>%
                                 dplyr::filter(country == 'China'))
        }else{


          reactable::reactable(data =gapminder::gapminder %>%
                                 dplyr::filter(year  == 2007) %>%
                                 dplyr::filter(country == input$treemapclick))
        }
      })

    }
  )
}

謝謝任何幫助都會很棒。

您需要 append 命名空間到您的自定義事件,如下所示:

click_js <- JS(
   glue::glue("function(event) {{
                  Shiny.setInputValue('{NS(id)('treemapclick')}',
                                      event.point.name);
               }}"
   )
)

注意onInputChangesetInputValue的舊名稱,后者更詳細(參見 這篇 Shiny 文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM