首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将datatable放在shinyjs模式中

将datatable放在shinyjs模式中
EN

Stack Overflow用户
提问于 2018-05-01 18:38:25
回答 2查看 608关注 0票数 2

我正在使用闪亮语义库和闪亮语义库,使应用程序看起来很好。使用showModal(modalDialog())的标准闪亮弹出消息不适用于语义UI,因此我求助于shinyjs来使用一些javascript来允许模态。使用全局定义的js模式,如何将datatable集成到模式中?下面是一个最小的例子:

代码语言:javascript
复制
library(shiny)
library(shinyjs)
library(shiny.semantic)
library(DT)

modal.js = "$('.ui.modal')
.modal('show')
;"

server <- function(input, output, session) {
  output$my_table = DT::renderDataTable({
    head(iris)
  })
  observeEvent(input$open_modal, {
    runjs(modal.js)
  })
}

ui <- semanticPage(
  suppressDependencies("bootstrap"),
  useShinyjs(),
  div(class = "ui modal",
      div(class="header", 'Modal header'),
      p('Placing DT::dataTableOutput("my_table") here fails.
         If it was displayed, I would select a row and return the value to a reactiveValue.')
  ),
  div(class = "ui basic button action-button", id = "open_modal", "Open modal ui"),
  div(class = "ui raised segment", DT::dataTableOutput("my_table"))
)

shinyApp(ui, server, options = list(launch.browser = TRUE))
EN

回答 2

Stack Overflow用户

发布于 2019-03-07 20:26:33

我今天遇到了同样的问题,并设法找到了解决这个问题的方法。当模式在shiny.semantic中打开时,数据表的输出仍然被归类为不可见。要解决此问题,您只需在JavaScript中添加额外的一行:

代码语言:javascript
复制
$('#my_table').show().trigger('shown');

如果您想在关闭时再次隐藏它,则需要添加更多的JS,但在使用tags$script()的UI中可能比在服务器中更好。

更新的应用:

代码语言:javascript
复制
library(shiny)
library(shinyjs)
library(shiny.semantic)
library(DT)

modal.js <- "$('.ui.modal').modal('show');
             $('#my_table').show().trigger('shown');"

server <- function(input, output, session) {
  output$my_table = DT::renderDataTable(head(iris))
  observeEvent(input$open_modal, runjs(modal.js))
}

ui <- semanticPage(
  suppressDependencies("bootstrap"),
  useShinyjs(),
  div(
    class = "ui modal",
    div(class = "header", "Modal header"),
    div(class = "content", div(class = "ui raised segment", DT::dataTableOutput("my_table")))
  ),
  div(class = "ui basic button action-button", id = "open_modal", "Open modal ui")
)

shinyApp(ui, server, options = list(launch.browser = TRUE))
票数 2
EN

Stack Overflow用户

发布于 2020-01-19 04:05:50

放入你的dataTableOutput

代码语言:javascript
复制
output$my_table = DT::renderDataTable({
    datatable(head(iris), class = "compact", escape = FALSE)   })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50115060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档