我之前在代码中成功使用了bsModal.但是,我似乎无法在用户默认访问应用的第一页时显示模式弹出窗口.我认为这样的事情会奏效,但不会.知道如何在页面访问时触发bsModal吗?
library(shiny)
library(shinyBS)
ui <- fluidPage(
mainPanel(
bsModal(id = 'startupModal', title = 'Dum Dum', trigger = '',
size = 'large', p("here is my mumbo jumbo")),
width = 12
)
)
server <- function(input, output, session) {
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
我只需要在用户访问应用程序时向用户发出消息,然后允许他们关闭模式弹出窗口并自由导航应用程序的其余部分.我正在使用Shinydashboard.所以,最终,这必须与之合作.
您可以使用toggleModal手动触发服务器的弹出窗口.
library(shiny)
library(shinyBS)
ui <- fluidPage(
mainPanel(
bsModal(id = 'startupModal', title = 'Dum Dum', trigger = '',
size = 'large', p("here is my mumbo jumbo")),
width = 12
)
)
server <- function(input, output, session) {
toggleModal(session, "startupModal", toggle = "open")
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
这是一个使用 JS 在页面加载“onload”时触发 bsModal 的解决方案,而ui无需等待server. 以及此处提出的解决方案,以防止最终用户通过单击模式外部或按 Esc 意外关闭模式
library(shiny)
library(shinyBS)
bsModalNoClose <-function(...) {
b = bsModal(...)
b[[2]]$`data-backdrop` = "static"
b[[2]]$`data-keyboard` = "false"
return(b)
}
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
bsModalNoClose("window", "Window",
title="Enter Login Details",size='small',
textInput('username', 'Username'),
passwordInput('pwInp', 'Password'),
actionButton('butLogin', 'Login', class = 'btn action-button btn-success', icon = icon('sign-in')),
footer = h4(actionLink('create_account','Create an account'),align='right'),
tags$head(tags$style("#window .modal-footer{display:none}
.modal-header .close{display:none}"),
tags$script("$(document).ready(function(){
$('#window').modal();
});")
))
)
,mainPanel()
))
server <- function(input, output, session) {}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
我希望它对未来的读者有所帮助。
| 归档时间: |
|
| 查看次数: |
2688 次 |
| 最近记录: |